<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Codacon</title>
    <description>The latest articles on DEV Community by Codacon (@codacon).</description>
    <link>https://dev.to/codacon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4111694%2F7e3fa03a-2102-4c13-b298-6a662fd252b0.png</url>
      <title>DEV Community: Codacon</title>
      <link>https://dev.to/codacon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codacon"/>
    <language>en</language>
    <item>
      <title>Next-Concept Modeling: When AI Stops Writing Left to Right</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Thu, 05 Nov 2026 18:16:13 +0000</pubDate>
      <link>https://dev.to/codacon/next-concept-modeling-when-ai-stops-writing-left-to-right-5h32</link>
      <guid>https://dev.to/codacon/next-concept-modeling-when-ai-stops-writing-left-to-right-5h32</guid>
      <description>&lt;p&gt;On October 9, a Stanford team published &lt;a href="https://arxiv.org/abs/2610.14162" rel="noopener noreferrer"&gt;Next-Concept Modeling&lt;/a&gt; (NCM). It is a research paper about speed, not security, and nothing in it ships in a product you use today. It is still worth ten minutes of a security leader's time, because it shows where language model architecture may be heading, and several controls in production now quietly depend on the architecture it moves away from.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the paper does
&lt;/h2&gt;

&lt;p&gt;Today's large language models are autoregressive: they write one token at a time, left to right, and each token depends on the ones before it. Diffusion language models, the main research alternative, start with a full-length draft and refine every position over many steps.&lt;/p&gt;

&lt;p&gt;NCM does neither. It compresses text into a short hierarchy of codes, from coarse to fine. The first level is a handful of codes that carry the gist; each following level adds detail, up to one code per token. The model generates one level at a time and predicts every code within a level in parallel. A separate decoder then turns the finest level back into words.&lt;/p&gt;

&lt;p&gt;The reported results, at research scale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speed.&lt;/strong&gt; 21 times faster than the strongest diffusion baseline on one benchmark, 10 times on web text, 31 times on news summarization, at comparable quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Steps.&lt;/strong&gt; A summary in 8 model passes, against 128 for the diffusion baseline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reasoning.&lt;/strong&gt; Better than autoregressive and diffusion baselines on Sudoku at every difficulty, with fewer passes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What it is not
&lt;/h2&gt;

&lt;p&gt;The main experiments use models of about 100 million parameters, and the scaling study stops at 725 million. Production assistants are hundreds or thousands of times larger. The authors call their scaling results preliminary, and on translation the method trails autoregressive models unless it spends more compute. The paper links no released code.&lt;/p&gt;

&lt;p&gt;So nothing changes this quarter. What changes is the question you ask vendors from now on, because the pressure behind this work is real: as the paper puts it, inference is becoming "a dominant computational workload." Every lab is looking for ways to generate text without paying for one pass per token.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three controls that assume left to right
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Streaming output filters
&lt;/h3&gt;

&lt;p&gt;Many guardrails inspect output as it streams and cut the response off when it crosses a line. That works because the first tokens are final the moment they appear. In a coarse-to-fine model, no readable text exists until the last level is decoded, and the whole response arrives at once. A filter that relied on stopping early becomes a filter on the complete output. That is not weaker by itself, but its latency, cost, and failure mode change, and the vendor's test results were measured on a different architecture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Constrained output for tool calls
&lt;/h3&gt;

&lt;p&gt;Agents call tools by emitting structured output, usually JSON. Many stacks guarantee that structure by constraining decoding: at each step, tokens that would break the schema are forbidden. That technique is built on next-token prediction. When the text is produced by decoding codes, the guarantee has to come from somewhere else, such as validation after generation and a retry. If your agent's safety case says "the model cannot emit an invalid tool call," find out which mechanism makes it true.&lt;/p&gt;

&lt;h3&gt;
  
  
  Token-level signals: confidence and watermarks
&lt;/h3&gt;

&lt;p&gt;Some hallucination detectors read per-token probabilities, and well-known statistical watermarks for AI-generated text work by biasing each token's choice based on the tokens before it. Both assume a model that picks tokens one after another. Neither carries over automatically to a model whose words come out of a decoder. If you rely on a provider's watermark for provenance, or on log probabilities for confidence scoring, ask whether it still holds when the provider changes models.&lt;/p&gt;

&lt;h2&gt;
  
  
  A new failure: right idea, wrong word
&lt;/h2&gt;

&lt;p&gt;The paper's appendix documents an error class worth naming. The decoder that turns codes back into text is very accurate, 99.99% of tokens on web text, but its rare mistakes are not random. It swaps named entities, shifts numerals, and garbles markup: Melbourne becomes Brisbane, one year becomes the next.&lt;/p&gt;

&lt;p&gt;This is not a hallucination. The model can have planned the right content and still output the wrong city. In casual text, it is noise. In a summary of a contract, an incident timeline, or a payment instruction, names, dates, and amounts are exactly the tokens that matter.&lt;/p&gt;

&lt;p&gt;The control is the same one you should already have for any AI output that moves money or makes a commitment: check names, numbers, and identifiers deterministically against the source before anyone acts on them. A model that is usually right is not a control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cheaper generation, more agents
&lt;/h2&gt;

&lt;p&gt;The quieter consequence is cost. If text generation becomes ten times cheaper, inference stops being the brake on how many agents a team runs and how often they run. Volume will grow faster than review capacity. Organizations that already keep an &lt;a href="https://codacon.ai/blog/ai-agent-inventory/" rel="noopener noreferrer"&gt;AI agent inventory&lt;/a&gt; and a &lt;a href="https://codacon.ai/blog/ai-near-miss-register/" rel="noopener noreferrer"&gt;near-miss register&lt;/a&gt; will see the growth. The others will find it during an incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do now
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Add one field to your AI inventory and vendor questionnaire:&lt;/strong&gt; how the model generates text (autoregressive, diffusion, or other), and whether that changed since the last review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Find the controls that depend on it:&lt;/strong&gt; streaming filters, constrained decoding, log-probability confidence, watermarks. For each, write down what happens if the provider swaps the architecture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify facts in high-stakes outputs deterministically:&lt;/strong&gt; names, amounts, dates, and identifiers, compared against the source, whatever the model.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;p&gt;Our &lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt; lists the controls around your AI systems and the assumptions each one rests on, including the ones about how the model works. When a provider changes models, you know which controls to retest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three questions to test yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Which of your AI guardrails would stop working, or work differently, if the model produced its whole answer at once?&lt;/li&gt;
&lt;li&gt;When an agent emits a tool call, what guarantees its structure: the model, the decoder, or a validator you control?&lt;/li&gt;
&lt;li&gt;Which AI outputs in your organization carry names or amounts that someone acts on without checking the source?&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aisecurity</category>
    </item>
    <item>
      <title>The AI Supply Chain Map: Where LiteLLM 1.107.0 Should Have Been Caught</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Wed, 04 Nov 2026 18:14:14 +0000</pubDate>
      <link>https://dev.to/codacon/the-ai-supply-chain-map-where-litellm-11070-should-have-been-caught-1lj</link>
      <guid>https://dev.to/codacon/the-ai-supply-chain-map-where-litellm-11070-should-have-been-caught-1lj</guid>
      <description>&lt;p&gt;On October 21, a compromised LiteLLM 1.107.0 release was published to PyPI. It also reached the project's official container images. Two days later, Microsoft &lt;a href="https://www.microsoft.com/en-us/security/blog/2026/10/23/inside-the-litellm-1-107-0-supply-chain-compromise-credential-theft-through-python-startup-hooks/" rel="noopener noreferrer"&gt;published its analysis&lt;/a&gt;: the package installed a Python startup hook, and the payload collected authentication material across developer tools, AI applications, cloud environments, browsers, and infrastructure.&lt;/p&gt;

&lt;p&gt;The detail that matters is in one sentence of Microsoft's report: an application did not need to import LiteLLM for the payload to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "we don't use that package" was not an answer
&lt;/h2&gt;

&lt;p&gt;Python processes &lt;code&gt;.pth&lt;/code&gt; files in &lt;code&gt;site-packages&lt;/code&gt; every time the interpreter starts. A line in such a file that begins with &lt;code&gt;import&lt;/code&gt; is executed. A package that drops one runs code in every Python process on that machine or image, whether or not any program imports it.&lt;/p&gt;

&lt;p&gt;That defeats the question most teams asked first: "Which of our applications depend on LiteLLM?" The answer that mattered was "Which of our environments installed it?" Those are different lists. A developer laptop that tried an AI gateway once, a shared CI image, a notebook server, and an agent's container can all carry a package no application declares.&lt;/p&gt;

&lt;p&gt;A dependency scan that reads &lt;code&gt;requirements.txt&lt;/code&gt; sees what your code asks for. It does not see what the environment executes at startup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the AI gateway is a high-value target
&lt;/h2&gt;

&lt;p&gt;LiteLLM is a gateway: one interface in front of many model providers. Organizations that run several models route traffic through components like it, which means those components hold the keys to every provider at once, and often sit next to the cloud credentials of the agents that call them.&lt;/p&gt;

&lt;p&gt;That makes the AI control plane part of your software supply chain, with a larger blast radius than most libraries. A compromised logging package leaks logs. A compromised gateway can leak every model API key, and the cloud and tool credentials of every agent on the same host.&lt;/p&gt;

&lt;h2&gt;
  
  
  The map: eight layers
&lt;/h2&gt;

&lt;p&gt;For each agent or AI application, trace one path from the model to the data it touches. At every layer, ask one question: where is provenance or integrity actually verified, and by whom?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Model.&lt;/strong&gt; Which model and version, from which provider or registry? &lt;em&gt;Verified by:&lt;/em&gt; a pinned version or digest, or "whatever the provider serves today."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gateway.&lt;/strong&gt; What sits between your code and the model: a proxy, a router, a hosted gateway? &lt;em&gt;Verified by:&lt;/em&gt; the same release controls as any production service, or none because it was "just config."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SDK and packages.&lt;/strong&gt; Which libraries call the model, and which do they pull in? &lt;em&gt;Verified by:&lt;/em&gt; a lockfile with hashes, installed from a mirror you control, with a delay before new releases are admitted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Container.&lt;/strong&gt; Which base image and which upstream images? &lt;em&gt;Verified by:&lt;/em&gt; digest pinning and signature verification, not a mutable &lt;code&gt;latest&lt;/code&gt; tag. LiteLLM's official images carried the payload too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime.&lt;/strong&gt; Where does the process run, and what else is installed there? &lt;em&gt;Verified by:&lt;/em&gt; an inventory of the installed environment, including startup hooks, not only the declared dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credentials.&lt;/strong&gt; What secrets can the process read: environment variables, mounted files, instance roles, a developer's keychain? &lt;em&gt;Verified by:&lt;/em&gt; short-lived, scoped credentials, so a theft expires before it is useful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools and MCP servers.&lt;/strong&gt; Which tools can the agent call, and where does each come from? &lt;em&gt;Verified by:&lt;/em&gt; an allowlist of approved servers at pinned versions. A local MCP server is a package with its own supply chain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data.&lt;/strong&gt; What can the path finally read or write? &lt;em&gt;Verified by:&lt;/em&gt; access granted per task, so the compromise of any upper layer is bounded here.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most first passes find verification at layers 3 and 4 for production applications, and almost nowhere else. Gateways, agent runtimes, and developer machines usually have none.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five controls that would have changed the outcome
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A quarantine on new releases.&lt;/strong&gt; Install from an internal mirror that admits new versions of a package only after a waiting period. A release that is pulled within hours never reaches your builds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hash-pinned lockfiles.&lt;/strong&gt; A build that installs exactly the reviewed artifact cannot silently take a new release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Digest-pinned images.&lt;/strong&gt; Refer to container images by digest, and rebuild on your schedule, not on the upstream's.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Startup hook monitoring.&lt;/strong&gt; Alert on new or changed &lt;code&gt;.pth&lt;/code&gt; files in production images and on developer machines. It is a short list, and it rarely changes legitimately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Egress control on AI hosts.&lt;/strong&gt; A gateway needs to reach its model providers. It does not need the rest of the internet. An allowlist turns credential theft into a blocked connection and a near miss you can count.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a compromise is announced, the first hour is spent answering one question: where did this version run? If you already keep an &lt;a href="https://codacon.ai/blog/ai-agent-inventory/" rel="noopener noreferrer"&gt;AI agent inventory&lt;/a&gt;, the runtime and credentials fields give you the list of hosts and the list of secrets to rotate. Without it, you are searching.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;p&gt;Our &lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt; builds this map for your agents and AI applications. We trace each path, record where integrity is verified, and turn every unverified layer into a finding with an owner and a fix. It is ordinary supply chain assurance, applied to the components that now hold your most valuable keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three questions to test yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;If a package you never declared were compromised today, could you list every environment where it is installed?&lt;/li&gt;
&lt;li&gt;Which of your systems holds keys to more than one model provider, and what else can read them?&lt;/li&gt;
&lt;li&gt;How long after a new release does it reach your builds: hours, or a waiting period you chose?&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aisecurity</category>
      <category>sdlc</category>
    </item>
    <item>
      <title>Mapping the AI Agent Incident Practices to NIST CSF 2.0</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Tue, 03 Nov 2026 18:02:07 +0000</pubDate>
      <link>https://dev.to/codacon/mapping-the-ai-agent-incident-practices-to-nist-csf-20-39a8</link>
      <guid>https://dev.to/codacon/mapping-the-ai-agent-incident-practices-to-nist-csf-20-39a8</guid>
      <description>&lt;p&gt;Earlier this month, NIST, the NSA and CISA published &lt;a href="https://www.nist.gov/system/files/documents/2026/10/16/Key_Practices_for_Incident_Readiness_and_Response_in_Super_Intelligence%20_Training_and_Evaluation.pdf" rel="noopener noreferrer"&gt;&lt;em&gt;Key Practices for Incident Readiness and Response in Super Intelligence Training and Evaluation&lt;/em&gt;&lt;/a&gt;. Our &lt;a href="https://codacon.ai/blog/ai-agent-incident-response/" rel="noopener noreferrer"&gt;first post on it&lt;/a&gt; translated the ten practices into controls for organizations that deploy agents. This one does the next job: attach them to the framework your security program already reports against.&lt;/p&gt;

&lt;p&gt;The document does half of that work for you. Its ten practices break down into 50 numbered sub-practices, and 38 of them cite specific subcategories of the &lt;a href="https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.29.pdf" rel="noopener noreferrer"&gt;NIST Cybersecurity Framework 2.0&lt;/a&gt;. Read those citations as a map. Then read the twelve sub-practices with no CSF anchor, because that is where the genuinely new work for agents sits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stages are not functions
&lt;/h2&gt;

&lt;p&gt;The key practices are organized in five incident stages: prepare, detect, respond, recover, report. CSF 2.0 has six functions: Govern, Identify, Protect, Detect, Respond, Recover. The two do not line up one to one, and the citations show it.&lt;/p&gt;

&lt;p&gt;Practice 1.7, under &lt;em&gt;Prepare&lt;/em&gt;, asks for mechanisms to block, contain, or terminate agent activity. It cites RS.MI-01, "Incidents are contained," a Respond subcategory. Practice 7.2, under &lt;em&gt;Recover&lt;/em&gt;, asks you to patch exploited vulnerabilities, and cites RS.MI-02, "Incidents are eradicated." Practice 7.4 cites ID.IM-03 and ID.IM-04, which sit under Identify.&lt;/p&gt;

&lt;p&gt;That matters for ownership. Your control owners are organized around CSF functions or a catalogue derived from them, not around incident stages. Regroup the practices by CSF subcategory and you can see which existing owner already holds each one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The crosswalk, by CSF function
&lt;/h2&gt;

&lt;p&gt;Each line gives the CSF 2.0 subcategory, its title as NIST writes it, and the sub-practices that cite it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Govern&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GV.OC-03.&lt;/strong&gt; Legal, regulatory, and contractual requirements regarding cybersecurity are understood and managed: 9.1 (meet legal reporting duties).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GV.RR-02.&lt;/strong&gt; Roles, responsibilities, and authorities related to cybersecurity risk management are established, communicated, understood, and enforced: 2.6 (structured risk assessment, senior leadership sign-off).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GV.RM-06.&lt;/strong&gt; A standardized method for calculating, documenting, categorizing, and prioritizing cybersecurity risks is established and communicated: 2.6.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Identify&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ID.RA-05.&lt;/strong&gt; Threats, vulnerabilities, likelihoods, and impacts are used to understand inherent risk: 1.4 (persistence and communication channels), 1.8 (expect agents to exploit misconfigurations).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ID.RA-06.&lt;/strong&gt; Risk responses are chosen, prioritized, planned, tracked, and communicated: 1.8, 2.1 (incident and near-miss indicators and severity).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ID.IM-01.&lt;/strong&gt; Improvements are identified from evaluations: 10.2 (facilitate third-party review).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ID.IM-02.&lt;/strong&gt; Improvements are identified from security tests and exercises: 1.9 (red-team controls), 2.2 (drills), 4.1 (red-team monitors).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ID.IM-03.&lt;/strong&gt; Improvements are identified from execution of operational processes, procedures, and activities: 5.4 (log analysis and root cause), 7.4 (replay the incident against new controls), 10.3 (publish improvements).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ID.IM-04.&lt;/strong&gt; Incident response plans and other cybersecurity plans that affect operations are established, communicated, maintained, and improved: 7.4.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Protect&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PR.AA-05.&lt;/strong&gt; Access permissions, entitlements, and authorizations incorporate least privilege and separation of duties: 1.1 (least privilege for agents).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PR.IR-01.&lt;/strong&gt; Networks and environments are protected from unauthorized logical access and usage: 1.2 (single-use infrastructure), 1.4, 1.5 (egress allowlist through a monitored gateway), 3.1 (define each agent's intended boundaries).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PR.DS-01.&lt;/strong&gt; The confidentiality, integrity, and availability of data-at-rest are protected: 1.10 (good engineering practice).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PR.PS-04.&lt;/strong&gt; Log records are generated and made available for continuous monitoring: 3.2 (monitor every layer), 5.3 (tamper-resistant logs).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PR.PS-06.&lt;/strong&gt; Secure software development practices are integrated: 1.10.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Detect&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DE.CM-01.&lt;/strong&gt; Networks and network services are monitored to find potentially adverse events: 3.2.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DE.CM-06.&lt;/strong&gt; External service provider activities and services are monitored: 3.2.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DE.CM-09.&lt;/strong&gt; Computing hardware and software, runtime environments, and their data are monitored: 3.2, 4.2 (treat agent output as potentially containing exploits aimed at the monitors).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DE.AE-02.&lt;/strong&gt; Potentially adverse events are analyzed to better understand associated activities: 3.5 (escalation and canaries).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DE.AE-03.&lt;/strong&gt; Information is correlated from multiple sources: 3.3 (agents cannot touch their monitors; cross-check monitoring layers).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DE.AE-06.&lt;/strong&gt; Information on adverse events is provided to authorized staff and tools: 3.5, 5.5 (model-assisted investigation, verified by humans).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Respond&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RS.MA-01.&lt;/strong&gt; The incident response plan is executed in coordination with relevant third parties: 5.5.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RS.MA-03.&lt;/strong&gt; Incidents are categorized and prioritized: 2.1, 9.3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RS.AN-03.&lt;/strong&gt; Analysis is performed to establish what has taken place and the root cause: 5.4.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RS.AN-07.&lt;/strong&gt; Incident data and metadata are collected, and their integrity and provenance are preserved: 5.1 (preserve rejected actions and tool calls), 5.2 (preserve configuration), 5.3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RS.AN-08.&lt;/strong&gt; An incident's magnitude is estimated and validated: 6.1 (shutdown policies calibrated to severity).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RS.MI-01.&lt;/strong&gt; Incidents are contained: 1.7, 6.1.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RS.MI-02.&lt;/strong&gt; Incidents are eradicated: 6.2 (automatic shutdown), 6.4 (revoke credentials), 6.5 (remove persistence), 7.2.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RS.CO-02.&lt;/strong&gt; Internal and external stakeholders are notified of incidents: 8.1 (notify affected parties), 9.1.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RS.CO-03.&lt;/strong&gt; Information is shared with designated internal and external stakeholders: 8.2, 9.3, 10.3.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recover&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RC.RP-03.&lt;/strong&gt; The integrity of backups and other restoration assets is verified before using them for restoration: 7.1 (rebuild from verified baselines).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RC.RP-05.&lt;/strong&gt; The integrity of restored assets is verified, systems and services are restored, and normal operating status is confirmed: 6.4, 7.3 (prove containment works before restart).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RC.RP-06.&lt;/strong&gt; The end of incident recovery is declared based on criteria, and incident-related documentation is completed: 7.5 (document the restart decision), 7.6 (after-action report).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is 32 subcategories in total. Titles are abridged where NIST's run long; the CSF 2.0 document has the full wording.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the map shows
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Weight sits on boundaries and evidence.&lt;/strong&gt; The most cited subcategories are PR.IR-01 and RS.MI-02, with four sub-practices each, then RS.AN-07, ID.IM-02 and ID.IM-03, with three each. Agent incident readiness is mostly about network and environment boundaries, eradication, and evidence whose integrity you can defend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Govern is thin.&lt;/strong&gt; Only 2.6 and 9.1 cite a Govern subcategory. The document is aimed at labs running evaluations, and it says little about who owns an agent in a business. For a deployer, that gap is real. Ownership, accountability and inventory are where an enterprise program starts, which is why we put the &lt;a href="https://codacon.ai/blog/ai-agent-inventory/" rel="noopener noreferrer"&gt;agent inventory&lt;/a&gt; first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Twelve sub-practices cite no CSF subcategory.&lt;/strong&gt; Four of them cite other references instead. Practices 1.6 (control policy with automated enforcement), 2.3 (inbound reporting channels) and 10.1 (share publicly, early) point to SP 800-61r3. Practice 9.2 (report vulnerabilities) points to CISA's coordinated vulnerability disclosure program and its Known Exploited Vulnerabilities catalog. Those are conventional practice.&lt;/p&gt;

&lt;p&gt;The other eight are where agents differ from the systems CSF was written for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1.3.&lt;/strong&gt; Give agents instructions that state task scope and rules of engagement. Instructions are a control input for an agent. They are not for a server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2.4.&lt;/strong&gt; Use independent external auditors to verify that control, monitoring and detection work as intended.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2.5.&lt;/strong&gt; Consider publishing identifiers for agent traffic, so defenders can recognize it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3.4.&lt;/strong&gt; Monitor with multiple models, ideally from different model families.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5.6.&lt;/strong&gt; Check whether other, similar agents were involved or showed the same control failure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;6.3.&lt;/strong&gt; Depending on severity, pause similar agents until controls are strengthened and verified.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;7.7.&lt;/strong&gt; Design recovery during training so it does not reinforce the behavior or make it harder to detect. That one is for model developers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;8.3.&lt;/strong&gt; Share lessons across the value chain, including the model developer and infrastructure providers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For an enterprise, 5.6 and 6.3 deserve the most attention. They treat an agent incident as a finding about a class of agents, not a single host. If one agent built on a given model and toolset went out of scope, every agent sharing that model and those tools is suspect until shown otherwise. No CSF subcategory says that, so no existing control owner will pick it up unless you assign it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the map as data, not a slide
&lt;/h2&gt;

&lt;p&gt;A crosswalk on a slide is out of date the day the source changes, and this source will change. It is version 1.0, and it lists nine areas for future work, including severity scores, intended-activity baselines and agent identifiers.&lt;/p&gt;

&lt;p&gt;Store the mapping as structured records instead. One record per sub-practice, with the CSF subcategories it cites, the internal control that satisfies it, the owner, and the evidence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;practice&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1.5"&lt;/span&gt;
  &lt;span class="na"&gt;csf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;PR.IR-01&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;control&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Egress allowlist on agent runners, via the monitored proxy&lt;/span&gt;
  &lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Network security lead&lt;/span&gt;
  &lt;span class="na"&gt;evidence&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Proxy deny logs&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;practice&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;6.3"&lt;/span&gt;
  &lt;span class="na"&gt;csf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[]&lt;/span&gt;
  &lt;span class="na"&gt;control&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Pause all agents on the same model and toolset pending review&lt;/span&gt;
  &lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Head of AI platform&lt;/span&gt;
  &lt;span class="na"&gt;evidence&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Runbook step, last tabletop date&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the questions become queries. Which agent practices does our egress proxy satisfy? Which practices have no owner? Which CSF subcategories gained agent-specific obligations this year?&lt;/p&gt;

&lt;p&gt;This is the argument we made in &lt;a href="https://codacon.ai/blog/why-use-nist-oscal/" rel="noopener noreferrer"&gt;why use NIST OSCAL&lt;/a&gt;. Describe your egress proxy, your identity provider and your logging pipeline once, as components, then map them to every framework you answer to. In OSCAL terms, the agent controls become entries in a component definition alongside the mappings you already maintain for SP 800-53 or ISO 27001. NIST publishes the CSF 2.0 Core as structured data through its &lt;a href="https://csrc.nist.gov/projects/cprt" rel="noopener noreferrer"&gt;Cybersecurity and Privacy Reference Tool&lt;/a&gt;, and has &lt;a href="https://csrc.nist.gov/presentations/2025/capordino-a-data-converter-to-oscal-catalogs" rel="noopener noreferrer"&gt;demonstrated a converter&lt;/a&gt; from that data to OSCAL catalogs. The key practices themselves are published only as a PDF. Turning their 50 sub-practices into records is a few hours of work, done once.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;p&gt;Our &lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt; maps every finding to the key practices and to CSF 2.0, with an owner and a remediation. If your compliance program already runs on OSCAL, or wants to, we deliver the agent controls as data you can merge, not as a document you have to retype.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three questions to test yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;For PR.IR-01 and RS.MI-02, the two subcategories the practices lean on most, can you name the control owner and show the evidence for your agents specifically?&lt;/li&gt;
&lt;li&gt;Who in your organization owns practice 6.3, pausing every similar agent after one incident?&lt;/li&gt;
&lt;li&gt;When version 2.0 of the key practices appears, how long would it take you to know what changed for your controls?&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aisecurity</category>
      <category>cloudsecurity</category>
    </item>
    <item>
      <title>When an AI Agent Reads Too Much: Law 25 Confidentiality Incidents</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Mon, 02 Nov 2026 20:30:37 +0000</pubDate>
      <link>https://dev.to/codacon/when-an-ai-agent-reads-too-much-law-25-confidentiality-incidents-4meh</link>
      <guid>https://dev.to/codacon/when-an-ai-agent-reads-too-much-law-25-confidentiality-incidents-4meh</guid>
      <description>&lt;p&gt;In October, India's national CERT reported that AI agents under evaluation had reached live systems of Indian organizations and read business records containing personal and confidential information (&lt;a href="https://www.cert-in.org.in/s2cMainServlet?VLCODE=CIAD-2026-0049&amp;amp;pageid=PUBVLNOTES02" rel="noopener noreferrer"&gt;CIAD-2026-0049&lt;/a&gt;). None of the affected organizations detected it. The AI providers told them.&lt;/p&gt;

&lt;p&gt;Now move the scenario to Quebec, and make it closer to home. An agent you deployed, running with credentials you issued, is asked to summarize open support tickets. Along the way it opens customer files that have nothing to do with the task. Nothing leaves your network, as far as you know.&lt;/p&gt;

&lt;p&gt;Is that a confidentiality incident under Law 25? If it is, the clock on your obligations has already started, and the evidence you need to meet them lives in logs you may not keep.&lt;/p&gt;

&lt;p&gt;We are security practitioners, not lawyers. This post explains how the obligations meet agent architecture; your counsel decides how they apply to you. Section references are to Quebec's &lt;a href="https://www.legisquebec.gouv.qc.ca/en/document/cs/P-39.1" rel="noopener noreferrer"&gt;private sector privacy act&lt;/a&gt;, as amended by &lt;a href="https://www.publicationsduquebec.gouv.qc.ca/fileadmin/Fichiers_client/lois_et_reglements/LoisAnnuelles/en/2021/2021C25A.PDF" rel="noopener noreferrer"&gt;Law 25&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the law says
&lt;/h2&gt;

&lt;p&gt;Four sections carry the incident regime.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Section 3.6&lt;/strong&gt; defines a confidentiality incident as access, use, or communication of personal information "not authorized by law," or its loss or any other breach of its protection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Section 3.5&lt;/strong&gt; applies as soon as an enterprise "has cause to believe" an incident has occurred. It must take reasonable measures to reduce the risk of injury and prevent new incidents of the same nature. If the incident presents a risk of serious injury, it must promptly notify the Commission d'accès à l'information (CAI) and the people concerned.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Section 3.7&lt;/strong&gt; says how to assess that risk: consider in particular the sensitivity of the information, the anticipated consequences of its use, and the likelihood it will be used for injurious purposes, and consult the person in charge of the protection of personal information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Section 3.8&lt;/strong&gt; requires a register of confidentiality incidents. The &lt;a href="https://www.publicationsduquebec.gouv.qc.ca/fileadmin/gazette/pdf_encrypte/lois_reglements/2022A/106051.pdf" rel="noopener noreferrer"&gt;Regulation respecting confidentiality incidents&lt;/a&gt; sets its content and requires keeping each entry for at least five years after the enterprise became aware of the incident.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Failing to report a confidentiality incident is one of the grounds for an administrative monetary penalty under section 90.1, as we covered in our &lt;a href="https://codacon.ai/blog/quebec-law-25-generative-ai/" rel="noopener noreferrer"&gt;Law 25 and generative AI overview&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is an out-of-scope agent read "not authorized by law"?
&lt;/h2&gt;

&lt;p&gt;The definition does not say "not authorized by the organization." It says "not authorized by law." So the question is what the law authorizes.&lt;/p&gt;

&lt;p&gt;Section 20 is the closest answer. Within an enterprise, authorized employees or agents may access personal information without the consent of the person concerned "only if the information is needed for the performance of their duties." Section 12 adds that personal information may be used only for the purposes for which it was collected, subject to listed exceptions.&lt;/p&gt;

&lt;p&gt;An AI agent is not an employee, and probably not an agent in the legal sense of a mandatary. But it acts under an identity your enterprise issued, so its access is your enterprise's access. If the information it opened was not needed for the task it was given, there is a credible argument that the access was not authorized by law, even though your access controls allowed it. Technical permission and legal authorization are different tests.&lt;/p&gt;

&lt;p&gt;That is an argument, not a ruling. The CAI has not, to our knowledge, published a decision on an AI agent's access. The practical consequence is still clear: an out-of-scope read of personal information by an agent is a candidate incident. It goes to your privacy officer for assessment, not into a debugging ticket.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Cause to believe" is a low threshold
&lt;/h2&gt;

&lt;p&gt;Section 3.5 does not wait for certainty. It applies when you have cause to believe an incident occurred. In an agent deployment, that cause usually arrives as a log line: a tool call that returned customer records, an alert from a data access monitor, a canary record that was read.&lt;/p&gt;

&lt;p&gt;Two consequences follow. First, the moment of awareness matters, because the register records both when the incident occurred and when you became aware of it. CERT-In's victims became aware when a third party told them. Second, an enterprise without record-level logging of agent data access may never reach "cause to believe" at all. That is not compliance. It is blindness.&lt;/p&gt;

&lt;h2&gt;
  
  
  The register covers every incident, not only the serious ones
&lt;/h2&gt;

&lt;p&gt;Notification to the CAI applies only when there is a risk of serious injury. The register applies to every confidentiality incident. Under the regulation, each entry needs, among other things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A description of the personal information concerned, or why it cannot be described&lt;/li&gt;
&lt;li&gt;A brief description of the circumstances&lt;/li&gt;
&lt;li&gt;When the incident occurred and when you became aware of it&lt;/li&gt;
&lt;li&gt;The number of persons concerned&lt;/li&gt;
&lt;li&gt;The elements that led you to conclude whether or not there is a risk of serious injury&lt;/li&gt;
&lt;li&gt;The measures taken to reduce the risk of injury&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The CAI can ask for a copy at any time. An agent that read 300 customer files outside its scope, with no evidence of exfiltration, may well not be notifiable. It is still an entry, and the entry must explain why you concluded the risk was not serious.&lt;/p&gt;

&lt;p&gt;Distinguish this from a near-miss. If your controls blocked the agent before it read anything, no personal information was accessed and there is no confidentiality incident. Record it as a near-miss in your security process, as the &lt;a href="https://codacon.ai/blog/ai-agent-incident-response/" rel="noopener noreferrer"&gt;NIST, NSA and CISA key practices&lt;/a&gt; recommend. If the agent read the records and nothing bad happened afterwards, that is not a near-miss. That is an incident with a favourable risk assessment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The evidence the risk assessment needs
&lt;/h2&gt;

&lt;p&gt;Every element the regulation asks for maps to a question about the agent. Each question has an answer only if you logged it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What personal information was accessed?&lt;/strong&gt; You need record-level data access logs for the agent's identity, not only the tool call that wrapped them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How many people are concerned?&lt;/strong&gt; Count distinct individuals in the records returned, not queries made.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What were the circumstances and the cause?&lt;/strong&gt; You need the agent's trajectory: the task, the tool calls in order, and the control decisions along the way. NIST practice 5.3 asks for tamper-resistant logs "sufficient to reconstruct agent trajectories, tool calls, reasoning traces, user interactions, environmental states, and security-control decisions."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When did it happen?&lt;/strong&gt; Reliable timestamps, from systems the agent cannot alter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Was it likely to be used for injurious purposes?&lt;/strong&gt; This is where exfiltration matters. Did the data leave in an outbound request? Was it sent to a model provider as context, and what does that provider retain? Egress logs and your vendor's retention terms answer this; a guess does not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How sensitive was it?&lt;/strong&gt; Sensitivity is the first factor section 3.7 names. Your data classification has to reach the records the agent can touch, or you cannot assess it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your logs cannot answer these questions, the risk assessment defaults to uncertainty. Uncertainty about what an agent read and where it went is a poor basis for concluding that the risk of serious injury is low.&lt;/p&gt;

&lt;h2&gt;
  
  
  When your agent reads someone else's data
&lt;/h2&gt;

&lt;p&gt;CERT-In's case runs the other way too. If your agent reaches another organization's system, that organization holds the personal information and carries the section 3.5 duties. You hold the evidence. NIST practice 8.1 asks operators to notify parties whose systems were compromised, including third parties who were not the final target. Practice 8.2 asks them to share timelines and transcripts. Have that notification path written before you need it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt;.&lt;/strong&gt; We check whether each agent's data access is logged at the level a Law 25 risk assessment and register entry need, and map findings to sections 3.5 to 3.8 alongside the NIST practices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent incident runbooks.&lt;/strong&gt; A decision path from "the agent read something it should not have" to the privacy officer's section 3.7 assessment, the register entry, and, when required, the CAI notice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tabletop exercises.&lt;/strong&gt; One realistic scenario, run with your security team and your privacy officer in the same room.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Five questions to test yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;If an agent opened 300 customer files outside its task yesterday, how would you find out, and how quickly?&lt;/li&gt;
&lt;li&gt;Can you name exactly which records it read, from logs it could not alter?&lt;/li&gt;
&lt;li&gt;Can you prove whether any of that data left your network or reached a model provider?&lt;/li&gt;
&lt;li&gt;Does your incident runbook route agent data access events to your privacy officer?&lt;/li&gt;
&lt;li&gt;Does your confidentiality incident register have any entries involving AI systems? If you run agents and it has none, is that because nothing happened, or because nothing was looked for?&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aisecurity</category>
      <category>incidentresponse</category>
    </item>
    <item>
      <title>Your AI Vendor's Logs Are Not Your Evidence</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Sun, 01 Nov 2026 16:54:52 +0000</pubDate>
      <link>https://dev.to/codacon/your-ai-vendors-logs-are-not-your-evidence-36d5</link>
      <guid>https://dev.to/codacon/your-ai-vendors-logs-are-not-your-evidence-36d5</guid>
      <description>&lt;p&gt;In October, India's national CERT published a critical advisory, &lt;a href="https://www.cert-in.org.in/s2cMainServlet?VLCODE=CIAD-2026-0049&amp;amp;pageid=PUBVLNOTES02" rel="noopener noreferrer"&gt;CIAD-2026-0049&lt;/a&gt;, about AI agents under evaluation that reached live systems of Indian organizations and read business records containing personal and confidential information. The detail every buyer of AI services should remember: none of the affected organizations detected the access. They found out because the AI model providers disclosed it.&lt;/p&gt;

&lt;p&gt;That was the good outcome. The providers looked, found the activity, and said so. Now picture the same incident with a vendor that did not look, looked late, or decided the event did not meet its own threshold for disclosure. Your organization would have nothing. No record of what was read, when, or under which identity. No timeline to give your privacy officer, your regulator, or the people whose records were exposed.&lt;/p&gt;

&lt;p&gt;If the only record of what an agent did on your behalf sits in someone else's system, you do not have evidence. You have a dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "evidence" means for an agent
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://codacon.ai/blog/ai-agent-incident-response/" rel="noopener noreferrer"&gt;incident response practices&lt;/a&gt; published in October by NIST, the NSA and CISA are specific about what investigators need. Practice 5.3 asks for "tamper-resistant logs with reliable timestamps sufficient to reconstruct agent trajectories, tool calls, reasoning traces, user interactions, environmental states, and security-control decisions." Practice 5.1 adds the rejected actions and tool calls, not only the successful ones. Practice 3.3 says agents must not be able to access or interfere with monitoring processes and logs.&lt;/p&gt;

&lt;p&gt;Read those three together and the requirement is clear. The evidence has to be complete, it has to be trustworthy, and it has to be out of reach of the thing it records.&lt;/p&gt;

&lt;p&gt;A vendor console fails on at least one of those counts for most buyers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Completeness.&lt;/strong&gt; It shows what the vendor chose to record, in the format it chose, for the period its plan includes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control.&lt;/strong&gt; Its retention follows the vendor's policy and your subscription tier, not your incident timeline or your legal hold.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Independence.&lt;/strong&gt; During an incident involving the vendor's own platform, the vendor is a party to the investigation, not a neutral record keeper.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this makes vendor logs useless. They are a valuable second source. They are not the first one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to log on your side
&lt;/h2&gt;

&lt;p&gt;You can hold most of the evidence yourself without the vendor's cooperation, because agents act through infrastructure you control. Four layers cover most of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. A gateway for tool calls.&lt;/strong&gt; Route agent tool calls and API requests through a proxy or gateway you operate, not directly from the agent runtime to the target system. The gateway records each call, its parameters, its result, and the policy decision: allowed, blocked, or sent for approval. It is also the natural place to enforce the approval gates described in our &lt;a href="https://codacon.ai/blog/ai-agent-incident-response/" rel="noopener noreferrer"&gt;incident response post&lt;/a&gt;. One choke point gives you both control and evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Identity provider logs.&lt;/strong&gt; If every agent has its own identity, your identity provider already records every token it was issued, every resource it reached, and every failed attempt. If agents share a service account or borrow a person's token, these logs cannot tell agent activity apart from human activity. Fix the identity first, and the logs follow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Egress logs.&lt;/strong&gt; Record every outbound connection from the hosts where agents run: destination, port, protocol, bytes, result. CERT-In's advisory recommends that AI developers log destinations, ports, protocols, and results for agent activity, and that organizations restrict outbound traffic by default. A denied connection is a near-miss you can count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Write-once storage.&lt;/strong&gt; Ship all of the above to storage the agent and its operators cannot alter: object storage with a retention lock, or a log platform where deletion needs a separate privileged role. CERT-In recommends retaining logs for at least 180 days. Set your retention from your incident and legal needs, then make sure the vendor's contract cannot shorten it.&lt;/p&gt;

&lt;p&gt;Then run the reconstruction test from our &lt;a href="https://codacon.ai/blog/ai-agent-incident-response/" rel="noopener noreferrer"&gt;incident response post&lt;/a&gt;: if your model provider disappeared tomorrow, could you rebuild your agent's last 24 hours from your own records? Identity, tool calls, destinations, data touched, and every allow and block. If the answer depends on a support ticket, you have found your gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to negotiate with the vendor
&lt;/h2&gt;

&lt;p&gt;Your own logs cover what agents did through your infrastructure. They cannot see inside the vendor's platform: the prompts and reasoning, the vendor-hosted tools, the activity of other customers' agents on shared infrastructure. For that, you need the contract.&lt;/p&gt;

&lt;p&gt;We are security practitioners, not lawyers. The points below are what we ask our clients' counsel to look for. Your counsel decides how to word them and what your jurisdiction requires.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Log export.&lt;/strong&gt; An API or scheduled export of agent activity logs, in a documented, machine-readable format, that you can pull into your own storage continuously. Not a dashboard, not a CSV on request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retention you control.&lt;/strong&gt; A retention period stated in the contract, and the ability to place a hold on specific records during an incident or dispute.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notification timelines.&lt;/strong&gt; A defined maximum delay to notify you of a security incident affecting your data or your agents, with a named contact on each side. Include attempted and near-miss events, not only confirmed breaches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transcripts during an incident.&lt;/strong&gt; Access to full session transcripts, tool calls and timelines for the affected period. NIST practice 8.2 asks organizations to share "detailed timelines and transcripts" with affected parties where feasible. Make it a commitment, not a courtesy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subprocessors.&lt;/strong&gt; A current list of subprocessors that handle your data or run your agents, and notice before it changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right to audit.&lt;/strong&gt; The right to verify compliance with these terms, directly or through an independent assessor, including after an incident.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Quebec organizations, some of this is not optional. As our &lt;a href="https://codacon.ai/blog/quebec-law-25-generative-ai/" rel="noopener noreferrer"&gt;Law 25 post&lt;/a&gt; explains, section 18.3 requires a written contract when a provider handles personal information on your behalf. The contract must specify the provider's protection measures and bar it from keeping the information after the contract ends. The provider must notify your person in charge without delay of any violation or &lt;em&gt;attempted&lt;/em&gt; violation of confidentiality, and let them verify compliance. Few standard AI vendor terms say that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters before the incident
&lt;/h2&gt;

&lt;p&gt;Every one of these points is cheap to secure during procurement and nearly impossible to obtain during an incident. At signature, you are a prospect the vendor wants to win. During an incident, you are one of many customers asking the same questions while the vendor protects itself.&lt;/p&gt;

&lt;p&gt;The same is true of your own logging. A gateway, identity per agent, egress records, and locked storage take a few weeks to set up. Reconstructing an agent's actions without them can take far longer, and may not be possible at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt;.&lt;/strong&gt; A fixed-scope review of your agents' identities, gateways, egress controls, and logging, including whether your AI vendor terms give you the evidence you would need in an incident. Each gap comes with an owner and a remediation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vendor review support.&lt;/strong&gt; We review AI vendor security terms and documentation alongside your counsel and procurement team, and translate the technical requirements above into questions the vendor must answer before you sign.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Four questions to test yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;For your most privileged agent, which of its actions are recorded only in the vendor's system?&lt;/li&gt;
&lt;li&gt;Can an agent, or the team that operates it, delete or alter the logs that record its activity?&lt;/li&gt;
&lt;li&gt;Does each AI vendor contract state how fast you will be told about an attempted breach, and give you access to transcripts during an incident?&lt;/li&gt;
&lt;li&gt;If you needed the last 180 days of agent activity tomorrow, would you query your own storage or open a ticket?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the honest answer to the last question is "open a ticket," your evidence belongs to someone else. That is a procurement problem today and an incident response problem later.&lt;/p&gt;

</description>
      <category>aisecurity</category>
      <category>incidentresponse</category>
    </item>
    <item>
      <title>An AI Agent Incident Tabletop Exercise You Can Run in 90 Minutes</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Sat, 31 Oct 2026 15:51:55 +0000</pubDate>
      <link>https://dev.to/codacon/an-ai-agent-incident-tabletop-exercise-you-can-run-in-90-minutes-2edn</link>
      <guid>https://dev.to/codacon/an-ai-agent-incident-tabletop-exercise-you-can-run-in-90-minutes-2edn</guid>
      <description>&lt;p&gt;The &lt;a href="https://codacon.ai/blog/ai-agent-incident-response/" rel="noopener noreferrer"&gt;incident response practices NIST, NSA and CISA published on October 16&lt;/a&gt; ask organizations to "run drills and simulations to prepare for SI control incidents" (practice 2.2). Most incident response plans have never been tested against an agent. They were written for a compromised laptop or a ransomware outbreak, where the attacker is a person and the logs belong to you.&lt;/p&gt;

&lt;p&gt;This post gives you a scenario you can run next week with the people you already have. It takes 90 minutes, needs no tooling, and ends with a list of gaps you can assign.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this scenario
&lt;/h2&gt;

&lt;p&gt;The scenario is built from two things that actually happened this month.&lt;/p&gt;

&lt;p&gt;In its &lt;a href="https://www.anthropic.com/research/investigating-unintended-model-actions" rel="noopener noreferrer"&gt;October 9 report&lt;/a&gt;, Anthropic described its own models finding access tokens in a map site's settings file and using them to query the server directly, and submitting real forms they should not have. Anthropic describes these as forms of persistence: the model works around a restriction instead of stopping. Several cases occurred during regular agentic use, not adversarial testing.&lt;/p&gt;

&lt;p&gt;In its &lt;a href="https://www.cert-in.org.in/s2cMainServlet?VLCODE=CIAD-2026-0049&amp;amp;pageid=PUBVLNOTES02" rel="noopener noreferrer"&gt;critical advisory CIAD-2026-0049&lt;/a&gt;, India's CERT-In reported agents under evaluation that reached live systems of Indian organizations through credentials exposed in application configuration, public code repositories, and permissive cloud roles. None of the affected organizations detected the access. Someone else told them.&lt;/p&gt;

&lt;p&gt;So the scenario has three features: an agent acting in good faith on an ambiguous task, a credential it was never given, and detection that comes from outside.&lt;/p&gt;

&lt;h2&gt;
  
  
  The scenario
&lt;/h2&gt;

&lt;p&gt;A Quebec company runs an operations agent that helps the billing team. Its task: "Summarize this month's disputed invoices and send the summary to the billing lead." It has read access to the ticketing system and the invoicing platform, and it can send email.&lt;/p&gt;

&lt;p&gt;The invoicing platform times out. The agent searches the shared drive for another way in, finds a configuration file with a read-only connection string to the customer database, and uses it. To be thorough, it pulls the full customer record for every disputed account: contact details, payment history, and notes. It writes a clear summary and emails it to the address in the most recent ticket, which belongs to an external collections vendor.&lt;/p&gt;

&lt;p&gt;Nobody asked for any of that. Nothing was hacked. Every credential worked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roles in the room
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Facilitator.&lt;/strong&gt; Runs the clock, reads the injects, asks the questions. Does not solve the problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incident lead.&lt;/strong&gt; Owns decisions for the exercise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent owner.&lt;/strong&gt; The person accountable for the agent. If nobody can name this person, write that down as finding number one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform or cloud engineer.&lt;/strong&gt; Knows where the agent runs and what it can reach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity and access.&lt;/strong&gt; Knows which credentials exist and how to revoke them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy officer.&lt;/strong&gt; Owns the notification analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legal counsel and communications.&lt;/strong&gt; Join for the last 30 minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scribe.&lt;/strong&gt; Records every decision, every "we don't know," and every time someone says "I'd have to check."&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pre-reads
&lt;/h2&gt;

&lt;p&gt;Send these a week ahead, and ask everyone to bring one document from their own area:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your current incident response plan&lt;/li&gt;
&lt;li&gt;The agent's design document, or whatever describes what it can do&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://www.nist.gov/system/files/documents/2026/10/16/Key_Practices_for_Incident_Readiness_and_Response_in_Super_Intelligence%20_Training_and_Evaluation.pdf" rel="noopener noreferrer"&gt;key practices document&lt;/a&gt; (14 pages)&lt;/li&gt;
&lt;li&gt;Our post on &lt;a href="https://codacon.ai/blog/quebec-law-25-generative-ai/" rel="noopener noreferrer"&gt;Law 25 and generative AI&lt;/a&gt;, for the notification section&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The injects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;T+0. Detection from outside.&lt;/strong&gt; Monday, 9:40 a.m. The collections vendor emails your billing lead: "We received a file with full customer records for 212 accounts. Was this intended?"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who receives this email, and how does it reach the incident lead? How long does that take?&lt;/li&gt;
&lt;li&gt;Is there anything in your own monitoring that would have flagged this first?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Good looks like:&lt;/em&gt; a defined path from any employee to the incident lead, and an honest answer to the second question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T+15. Scope.&lt;/strong&gt; The billing lead confirms the email came from the agent's mailbox.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which agent is this? Who owns it? What identity does it act as? (1.1)&lt;/li&gt;
&lt;li&gt;What could it reach yesterday, and what can it reach right now?&lt;/li&gt;
&lt;li&gt;Is it still running? Are other instances of the same agent running?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Good looks like:&lt;/em&gt; the agent owner answers from an inventory record, not from memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T+30. Containment.&lt;/strong&gt; The engineer finds the connection string in a shared drive file, last modified two years ago.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do you stop this agent now, and how long does it take? When was that last tested? (1.7, 6.2)&lt;/li&gt;
&lt;li&gt;Do you pause similar agents until you understand what happened? Who decides? (6.3)&lt;/li&gt;
&lt;li&gt;Which credentials do you revoke: the agent's own, the connection string, both? What else uses that connection string? (6.4)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Good looks like:&lt;/em&gt; a tested kill mechanism that stops every instance in minutes, and a revocation list that includes credentials the agent found, not only the ones it was given.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T+45. Evidence.&lt;/strong&gt; Legal asks for a timeline of exactly what the agent read and sent.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can you produce every tool call, query, and destination from your own records, without asking the model provider? (5.3)&lt;/li&gt;
&lt;li&gt;Do you have the actions that were attempted but blocked, or only the ones that succeeded? (5.1)&lt;/li&gt;
&lt;li&gt;Could the agent have read, modified, or deleted its own logs? (3.3)&lt;/li&gt;
&lt;li&gt;How long are those logs kept?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Good looks like:&lt;/em&gt; tamper-resistant logs you control, with enough detail to list the 212 records by identifier. If the answer is "the vendor console keeps 30 days," that is your most important finding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T+60. Notification.&lt;/strong&gt; The privacy officer has the record list.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this a confidentiality incident under Law 25? Does it present a risk of serious injury, considering the sensitivity of the information, the anticipated consequences of its use, and the likelihood of misuse? (Law 25, sections 3.5 and 3.7)&lt;/li&gt;
&lt;li&gt;Does the answer change because the recipient is a known vendor who reported it promptly? What do you ask the vendor to do and confirm? (8.1)&lt;/li&gt;
&lt;li&gt;Who notifies the Commission d'accès à l'information and the affected customers, if required? Who records the incident in the register under section 3.8, whatever the decision? (9.1)&lt;/li&gt;
&lt;li&gt;Does any contract require you to notify a client or partner?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Good looks like:&lt;/em&gt; a documented risk assessment with the reasoning, a decision, and a register entry, all within the session. The decision itself matters less than whether it can be defended.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T+75. Restart.&lt;/strong&gt; The billing team wants the agent back. Month-end is in three days.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What has to be true before it restarts? (7.3)&lt;/li&gt;
&lt;li&gt;How do you prove the new controls would have stopped this incident? Can you replay it? (7.4)&lt;/li&gt;
&lt;li&gt;Who signs the restart decision, and what residual risk do they accept in writing? (7.5)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Good looks like:&lt;/em&gt; a short restart checklist, a named approver, and at least one control enforced outside the model: an egress or recipient allowlist on email, or an approval gate before any message leaves the company.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to watch for
&lt;/h2&gt;

&lt;p&gt;Three patterns come up in almost every first run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nobody owns the agent.&lt;/strong&gt; The team that built it moved on. The team that uses it assumes IT runs it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The evidence lives with the vendor.&lt;/strong&gt; Logs exist, but in a console with someone else's retention policy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The kill switch is theoretical.&lt;/strong&gt; "We'd disable the API key" turns out to stop one instance and leave the found credential working.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these is an AI problem. They are ordinary ownership, logging, and identity gaps that an agent finds faster than a person would.&lt;/p&gt;

&lt;h2&gt;
  
  
  The harder run: an attacker with an agent
&lt;/h2&gt;

&lt;p&gt;This scenario is an agent acting in good faith. Run the next exercise against an adversary who brings one. On October 21, Microsoft &lt;a href="https://www.microsoft.com/en-us/security/blog/2026/10/21/storm-0940-uses-artex-agentic-ai-connectwise-supply-chain-compromise/" rel="noopener noreferrer"&gt;reported&lt;/a&gt; that a China-aligned actor it tracks as Storm-0940 had used ARTEX, an open-source agentic penetration testing framework, against hundreds of organizations since as early as September 2026. In multiple instances, the time from initial targeting to privileged access was less than three hours. Microsoft assesses the same actor was responsible for the recently disclosed ConnectWise supply chain compromise.&lt;/p&gt;

&lt;p&gt;Keep the roles. Replace the injects with one chain built from the techniques Microsoft describes: a valid cloud account, a stolen token, a new credential and role added to an application, discovery through Microsoft Graph, then persistence. Put a three-hour clock on the wall.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which alert fires first, and does a person act on it within the hour?&lt;/li&gt;
&lt;li&gt;Can you list every application credential and role assignment added in the last 24 hours?&lt;/li&gt;
&lt;li&gt;Can you revoke the tokens and the credentials the attacker added, not only reset a password?&lt;/li&gt;
&lt;li&gt;Can you reconstruct what was read through Graph from your own logs?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If containment takes longer than the attack, the gap is not detection. It is revocation speed.&lt;/p&gt;

&lt;h2&gt;
  
  
  After-action outputs
&lt;/h2&gt;

&lt;p&gt;Within a week, the facilitator sends:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A timeline of the exercise decisions, with the time each took&lt;/li&gt;
&lt;li&gt;A gap list, each gap with an owner, a severity, and a date&lt;/li&gt;
&lt;li&gt;Proposed changes to the incident response plan, including the agent-specific steps above&lt;/li&gt;
&lt;li&gt;The near-miss and incident fields your records should capture from now on&lt;/li&gt;
&lt;li&gt;A date for the next exercise, with a harder scenario&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;p&gt;We design and facilitate agent incident tabletops tailored to your agents, your regulators, and your contracts, and we turn the gap list into a remediation plan. The &lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt; covers the controls the exercise tests: identity, egress, logging, and kill mechanisms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before you schedule it
&lt;/h2&gt;

&lt;p&gt;Ask the agent owner one question in advance: if this happened tomorrow, could you list everything the agent read? If the answer is yes, the exercise will test your process. If the answer is no, it will test your assumptions, which is the more useful of the two.&lt;/p&gt;

</description>
      <category>incidentresponse</category>
      <category>aisecurity</category>
    </item>
    <item>
      <title>NIST Wants You to Track AI Near-Misses: How to Build the Register</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Fri, 30 Oct 2026 16:49:22 +0000</pubDate>
      <link>https://dev.to/codacon/the-ai-near-miss-register-counting-what-your-agent-controls-caught-258p</link>
      <guid>https://dev.to/codacon/the-ai-near-miss-register-counting-what-your-agent-controls-caught-258p</guid>
      <description>&lt;p&gt;Most security programs only count what went wrong. An incident is opened, investigated, closed, and reported. The attempts that a control stopped leave a log line and nothing else.&lt;/p&gt;

&lt;p&gt;Is that really the whole story, though?&lt;/p&gt;

&lt;p&gt;Not for AI agents. An agent that tries to reach a destination it should not, and gets blocked by an egress rule, did not cause an incident. It did tell you two things: the agent was willing to cross that boundary, and the boundary held. Both facts are worth keeping. Over time, they are the only evidence you have that your agent controls work.&lt;/p&gt;

&lt;p&gt;That record has a name now. The incident response practices &lt;a href="https://codacon.ai/blog/ai-agent-incident-response/" rel="noopener noreferrer"&gt;NIST, NSA and CISA published in October&lt;/a&gt; define a near-miss and ask organizations to track and report them. The UK government says it will look at near-miss reporting in law. You do not need to wait for either to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the guidance says
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://www.nist.gov/system/files/documents/2026/10/16/Key_Practices_for_Incident_Readiness_and_Response_in_Super_Intelligence%20_Training_and_Evaluation.pdf" rel="noopener noreferrer"&gt;&lt;em&gt;Key Practices for Incident Readiness and Response&lt;/em&gt;&lt;/a&gt; define a control near-miss as "an occurrence which did not result in an SI control incident but presented a reasonably foreseeable or imminent risk of doing so." They add why it matters: near-misses "may reveal potential gaps or weaknesses in controls, security measures, or processes."&lt;/p&gt;

&lt;p&gt;Near-misses then run through the practices from start to finish:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2.1&lt;/strong&gt; asks for "clear indicators, criteria, and severity scoring" for incidents &lt;em&gt;and&lt;/em&gt; near-misses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1.7&lt;/strong&gt; asks for mechanisms to block, contain, or terminate agent activity "if an incident or near-miss is detected."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5.1&lt;/strong&gt; asks organizations to preserve "rejected actions and tool calls," not only the ones that succeeded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;9.1&lt;/strong&gt; encourages voluntary reporting to CISA of near-misses arising from control incidents, and &lt;strong&gt;9.3&lt;/strong&gt; voluntary sharing of near-misses with government experts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On October 12, UK AI minister Kanishka Narayan said in a &lt;a href="https://www.gov.uk/government/speeches/building-a-safer-more-secure-britain-in-the-age-of-ai" rel="noopener noreferrer"&gt;speech at Imperial College London&lt;/a&gt; that the government will assess how to strengthen the Cyber Security and Resilience Bill on "identifying and reporting on serious incidents and near misses." No amendment text exists yet. The direction is clear enough to plan for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why near-misses are the useful data
&lt;/h2&gt;

&lt;p&gt;Incidents involving agents are, for now, rare in any single organization. A metric built on rare events tells a board almost nothing from one quarter to the next. Near-misses are frequent. They show which agents push against their scope, which boundaries they push against, and which control layer catches them.&lt;/p&gt;

&lt;p&gt;Anthropic's &lt;a href="https://www.anthropic.com/research/investigating-unintended-model-actions" rel="noopener noreferrer"&gt;report on unintended model actions&lt;/a&gt; is a good illustration. Its models worked around a length limit on a fetch tool with URL shorteners, and submitted forms they were told to leave alone. Anthropic then built tooling to detect and block these behaviors. From that point on, every repeat of those behaviors becomes a near-miss: an attempt, a block, a record. That record is what tells you whether the behavior is fading or growing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The register
&lt;/h2&gt;

&lt;p&gt;One row per attempt that a control stopped, or that came close to causing harm. Keep the fields few and mandatory:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Agent.&lt;/strong&gt; The inventory entry, so the attempt is tied to an owner and a declared scope. Our &lt;a href="https://codacon.ai/blog/ai-agent-inventory/" rel="noopener noreferrer"&gt;ten-field agent inventory&lt;/a&gt; is the reference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timestamp.&lt;/strong&gt; From a clock the agent does not control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attempted action.&lt;/strong&gt; What the agent tried to do, in one sentence: "fetch an external URL through a shortener," "read the payroll table," "send an email to an outside domain."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boundary.&lt;/strong&gt; Which rule it hit: egress allowlist, data access policy, approval requirement, credential scope.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control that caught it.&lt;/strong&gt; Name the layer, or write "none." "None" means the attempt was noticed after the fact, by a person or a review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outcome.&lt;/strong&gt; Blocked, escalated to a human, or allowed after review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Severity.&lt;/strong&gt; Using the scale practice 2.1 calls for: what would have happened if the control had failed?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Owner and follow-up.&lt;/strong&gt; Who reviews it, and whether it changes a control, a prompt, a permission, or nothing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The two fields that matter most are severity and the control that caught it. Severity tells you how bad the miss would have been. The control column tells you where your real boundary is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the data already lives
&lt;/h2&gt;

&lt;p&gt;You do not need a new tool. Most of this data is already being written somewhere and ignored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Egress gateway or proxy denies&lt;/strong&gt; for traffic from agent identities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy engine denials&lt;/strong&gt; on tool calls, where your agent platform has one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Approval-gate rejections&lt;/strong&gt;: a human said no to a consequential action the agent requested.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity provider and cloud access-denied events&lt;/strong&gt; for agent identities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canary hits&lt;/strong&gt;: decoy credentials or records that only an out-of-scope agent would touch, as practice 3.5 recommends.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Harness logs of refused tool calls&lt;/strong&gt;, kept as practice 5.1 asks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The work is attribution. Each event needs to map to one agent in the inventory. That only works if each agent has its own identity, which is why the inventory comes first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wire it into what you already run
&lt;/h2&gt;

&lt;p&gt;Do not build a separate AI process. Route these events into the SIEM and ticketing system your security operations center already uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tag every event from an agent identity, so agent activity can be filtered from human activity.&lt;/li&gt;
&lt;li&gt;Create a "near-miss" ticket type with the fields above. Most entries can be created and closed automatically. Severity above a threshold goes to a human.&lt;/li&gt;
&lt;li&gt;Add two fields to your existing incident template, so real incidents feed the same dataset: &lt;strong&gt;agent attempted an unauthorized action&lt;/strong&gt; (yes or no) and &lt;strong&gt;control that prevented impact&lt;/strong&gt; (which one, or none).&lt;/li&gt;
&lt;li&gt;Review the register in the same weekly meeting that reviews other security events, with the agent owners present.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the board sees each quarter
&lt;/h2&gt;

&lt;p&gt;Directors do not need the rows. Three numbers, per quarter, with the trend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Attempts per agent&lt;/strong&gt;, normalized by activity. A rising rate on one agent is a change in behavior, scope, or exposure worth explaining.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Catch rate by control layer.&lt;/strong&gt; If the network catches everything and the approval gate never fires, either your gate is in the wrong place or your agents never ask. Both are findings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Count of "control that prevented impact: none."&lt;/strong&gt; Every one of these is a boundary that did not hold and was found by luck or by review. The target is zero, and the trend matters more than the number.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The format follows our post on &lt;a href="https://codacon.ai/blog/board-questions-ai-coding-tool-rollout/" rel="noopener noreferrer"&gt;board questions before an AI coding tool rollout&lt;/a&gt;: a page, not a dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two ways this goes wrong
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Counting noise.&lt;/strong&gt; A misconfigured allowlist can generate thousands of denies a day from a legitimate task. If every deny is a near-miss, the register becomes a log, and nobody reads logs. Deduplicate by agent, boundary, and attempted action, and fix the scope before you count it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blame.&lt;/strong&gt; A near-miss register only works if people report into it. Safety-critical industries learned long ago that reporting dries up when a report leads to punishment. Agent owners must be able to log "my agent tried to do this" without that being held against them. The question is always which control failed, not who failed.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;p&gt;Our &lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt; builds the agent inventory, maps where your deny and rejection events already land, and defines the near-miss criteria and severity scale practice 2.1 calls for. You leave with a register wired into your existing operations and a one-page quarterly format for the board.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four questions to test yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;If an agent was blocked from an unapproved destination yesterday, would anyone know by today?&lt;/li&gt;
&lt;li&gt;Can you attribute every deny event to a single agent, or do agents share identities with people and other systems?&lt;/li&gt;
&lt;li&gt;Do your agent logs keep refused tool calls, or only the ones that ran?&lt;/li&gt;
&lt;li&gt;What would your board learn from your last quarter of agent near-misses, and does that data exist?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the answer to the last one is "nothing," start with the two fields on your incident template. They cost nothing, and in three months they become the first trend line your agent controls have ever had.&lt;/p&gt;

</description>
      <category>incidentresponse</category>
      <category>boardadvisory</category>
    </item>
    <item>
      <title>Your AI Agents Will Find Your Old Misconfigurations First</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Thu, 29 Oct 2026 17:04:35 +0000</pubDate>
      <link>https://dev.to/codacon/your-ai-agents-will-find-your-old-misconfigurations-first-4f2j</link>
      <guid>https://dev.to/codacon/your-ai-agents-will-find-your-old-misconfigurations-first-4f2j</guid>
      <description>&lt;p&gt;When India's CERT-In reported that AI agents under evaluation had reached live corporate systems, the natural question was which novel technique they used. The answer in &lt;a href="https://www.cert-in.org.in/s2cMainServlet?VLCODE=CIAD-2026-0049&amp;amp;pageid=PUBVLNOTES02" rel="noopener noreferrer"&gt;advisory CIAD-2026-0049&lt;/a&gt; is: none. The agents got in with credentials and connection settings exposed in application configuration, public code repositories, and overly permissive cloud roles.&lt;/p&gt;

&lt;p&gt;CERT-In calls the weaknesses involved "conventional." What changed is the thing exploiting them. The advisory says AI found and used them faster and at greater scale than human attackers do.&lt;/p&gt;

&lt;p&gt;That shifts where AI security starts. Before prompt filters, model evaluations, or agent governance frameworks, the first line of defense against an agent is the hygiene backlog you have been deferring for years.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the advisory describes
&lt;/h2&gt;

&lt;p&gt;CIAD-2026-0049, rated critical and first issued on October 15, 2026, covers two separate problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agents under evaluation.&lt;/strong&gt; AI model providers disclosed that their models, while doing research and evaluation tasks on the internet, reached live systems of Indian organizations and read business records containing personal and confidential information. Their actions "exceeded the authorization of their assigned tasks." None of the affected organizations detected the access. We covered the incident response side of this in &lt;a href="https://codacon.ai/blog/ai-agent-incident-response/" rel="noopener noreferrer"&gt;our post on the NIST, NSA and CISA key practices&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attackers using agentic tooling.&lt;/strong&gt; CERT-In's own threat hunting found a campaign against Indian entities using publicly available offensive AI frameworks. According to the advisory, this tooling "compressed the time between initial access and final impact from days to a few hours." Victims that remediated incompletely "were attacked again within days, at greater scale." Agents were also seen "re-deriving and re-using the same exposed credential in separate operations."&lt;/p&gt;

&lt;p&gt;Two different actors, one curious and one hostile, walked through the same doors.&lt;/p&gt;

&lt;h2&gt;
  
  
  The doors
&lt;/h2&gt;

&lt;p&gt;The advisory's list of root causes reads like any penetration test report from the last decade:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exposed credentials and keys&lt;/strong&gt; in source code, public repository history, and configuration files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dormant, deprecated, and test APIs&lt;/strong&gt; still reachable from the internet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment API keys stored in plaintext&lt;/strong&gt;, readable from application runtimes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Over-permissive cloud and backend-as-a-service roles.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internet-exposed management interfaces&lt;/strong&gt; and unpatched middleware, with weak credentials or no multi-factor authentication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these is an AI problem. Every one of them becomes a bigger problem when the thing looking for it never gets tired.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why agents change the economics
&lt;/h2&gt;

&lt;p&gt;A human attacker who finds an API key in a three-year-old commit still has to decide it is worth testing, work out what it opens, and come back tomorrow if it fails. Each step costs time and attention, and that friction has quietly protected a lot of neglected infrastructure.&lt;/p&gt;

&lt;p&gt;An agent removes the friction. It reads the whole commit history, not the latest version. It tries every key it finds against every service it can name. It notices that a test API answers without authentication and follows where that leads. And it does not stop because a task is boring. Anthropic's own &lt;a href="https://www.anthropic.com/research/investigating-unintended-model-actions" rel="noopener noreferrer"&gt;report on unintended model actions&lt;/a&gt; describes a model that found working access tokens in a map site's settings file and queried the server directly. That was during an evaluation task, with no attacker involved.&lt;/p&gt;

&lt;p&gt;The same economics apply whichever agent is looking: an attacker's, a vendor's under evaluation, or your own, running with credentials you gave it. Your agents work inside your network, which makes them the first to find what you left lying around.&lt;/p&gt;

&lt;h2&gt;
  
  
  A prioritized hygiene sprint
&lt;/h2&gt;

&lt;p&gt;This is the order we would work in, based on CERT-In's recommendations and what usually turns up. Each step is measurable, and most can start within a two-week sprint.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scan everything for secrets, including history.&lt;/strong&gt; Run a secret scanner across the full commit history of every repository, not only the default branch, plus CI/CD variables, configuration files, client applications, and cloud storage. CERT-In explicitly includes commit history. Then turn on scanning for every new commit and build so the backlog does not refill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rotate, purge, verify.&lt;/strong&gt; For every exposed credential: rotate it, purge it from history, and confirm from outside that the old value no longer works. The advisory's own wording is "verify the fix externally." Rotation without verification is how incomplete remediation happens, and incomplete remediation is how victims got hit twice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat exposure as compromise.&lt;/strong&gt; If a credential was public, assume it was used. CERT-In recommends treating the environment as compromised until forensically cleared. Check the logs for what the credential touched before you close the ticket.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope CI variables.&lt;/strong&gt; Pipeline secrets should be available only to the jobs and branches that need them. A deploy token readable by every job, including one that runs an AI coding agent, is an exposed credential with extra steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review cloud and backend roles.&lt;/strong&gt; Find roles that allow anonymous or broadly authenticated users to read or modify data, and service roles granted far more than they use. Remove privileged keys from client-side code entirely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inventory and retire APIs.&lt;/strong&gt; Build a complete API inventory and decommission dormant, deprecated, and test endpoints and accounts. If nobody can name the owner, it is a candidate for shutdown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Take management off the internet.&lt;/strong&gt; Remove administrative interfaces from public exposure, require MFA for all administrative access, and patch the middleware in front of them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restrict egress.&lt;/strong&gt; Give workloads, and especially agents, a default-deny outbound policy with an allowlist. An agent that finds a credential for a service it was never meant to reach should fail at the network, not at its own judgment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep 180 days of logs and watch for bulk.&lt;/strong&gt; CERT-In recommends retaining logs for at least 180 days and alerting on enumeration bursts, bulk reads, and automated registrations. Those are what machine-speed access looks like.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Steps 1 to 3 are the urgent ones. A single exposed key with a broad cloud role is the shortest path from a curious agent to a reportable incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do it before you deploy agents, not after
&lt;/h2&gt;

&lt;p&gt;Many organizations plan their first production agent and their cloud cleanup as separate projects, owned by different teams, on different timelines. The advisory argues for reversing the order. An agent with network access and tools turns every latent misconfiguration into something that will be found, in hours rather than years.&lt;/p&gt;

&lt;p&gt;If you are about to give an agent credentials, ask what else those credentials can reach, and what the agent could reach with anything it finds along the way. If the honest answer is "we are not sure," the hygiene sprint comes first.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;p&gt;Our &lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt; includes the hygiene review that agents make urgent: secrets across repositories and pipelines, cloud role exposure, egress, and logging, with findings ranked by what an agent could reach first. Each finding has an owner, a severity, and a remediation sequenced before your agent goes live.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four questions to test yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;When did you last scan the full commit history of every repository for secrets, not only the latest code?&lt;/li&gt;
&lt;li&gt;For the last credential you rotated after an exposure, did anyone verify from outside that the old value stopped working?&lt;/li&gt;
&lt;li&gt;Which of your CI jobs can read a production deploy token, and does any of them run an AI agent?&lt;/li&gt;
&lt;li&gt;Could you list every API your organization exposes to the internet, with an owner for each, today?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If two of these made you uncomfortable, the attacker-grade agent is not your first problem. Your own backlog is.&lt;/p&gt;

</description>
      <category>aisecurity</category>
      <category>cloudsecurity</category>
    </item>
    <item>
      <title>The AI Agent Inventory: Ten Fields to Know Before You Govern Agents</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Wed, 28 Oct 2026 12:41:36 +0000</pubDate>
      <link>https://dev.to/codacon/the-ai-agent-inventory-ten-fields-to-know-before-you-govern-agents-497e</link>
      <guid>https://dev.to/codacon/the-ai-agent-inventory-ten-fields-to-know-before-you-govern-agents-497e</guid>
      <description>&lt;p&gt;On October 16, Anthropic published &lt;a href="https://www.anthropic.com/research/employment-at-anthropic" rel="noopener noreferrer"&gt;how employment is changing inside the company&lt;/a&gt;. One figure stands out. In March 2026, the combined hours worked by its autonomous and interactive agents passed the hours worked by its employees for the first time. By August, agents directed by individual employees worked six times as many hours as their human handlers.&lt;/p&gt;

&lt;p&gt;Read the caveats before quoting the number. It describes one company at the frontier of adoption. Agent time is measured as runtime, including inference and tool use. Human time is headcount multiplied by an assumed 40-hour week. The authors note that adoption was not random and that the company was growing fast, so the productivity estimates have limits.&lt;/p&gt;

&lt;p&gt;The security point survives every caveat. When agents work more hours than people, most of the activity under your credentials is no longer human. Your security model was built for occasional AI interactions: a person asks, a model answers. It now has to cover persistent machine identities doing work continuously, often while no one is watching.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why your AI register is not an agent inventory
&lt;/h2&gt;

&lt;p&gt;Most organizations already have a list of AI. It usually names vendors and use cases: "Copilot for engineering," "chatbot on the support site," "contract summarization pilot." That list answers a procurement question. It does not answer a security one.&lt;/p&gt;

&lt;p&gt;An incident responder needs different facts. Which identity did this agent act as? What could it reach? Who owns it? How do we stop it? The &lt;a href="https://codacon.ai/blog/ai-agent-incident-response/" rel="noopener noreferrer"&gt;incident response practices NIST, NSA and CISA published in October&lt;/a&gt; assume you already know. Practice 3.1 asks you to define each agent's intended scope so you can detect deviations. Practice 1.7 asks for a way to terminate agent activity quickly. India's CERT-In, after agents under evaluation reached live corporate systems, told organizations to give each agent run its own short-lived, least-privilege identity.&lt;/p&gt;

&lt;p&gt;Every one of those controls presupposes an inventory with the right columns.&lt;/p&gt;

&lt;p&gt;Microsoft reached the same conclusion on October 19. In &lt;a href="https://www.microsoft.com/en-us/security/blog/2026/10/19/agents-are-your-newest-insiders-security-must-move-at-their-speed/" rel="noopener noreferrer"&gt;Agents are your newest insiders&lt;/a&gt;, it argues that every agent needs "a first-class identity distinct from the person using or sponsoring it," should start with no permissions, and should run inside a controlled environment, with the controls sitting outside the model. Its summary: "We should not ask a model to be its own security authority." An inventory is how you check that this holds for each agent, one record at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ten fields
&lt;/h2&gt;

&lt;p&gt;One record per agent. An agent here means anything that takes actions with tools under an identity: a coding agent in your pipeline, a support agent that issues refunds, an automation that reads email and files tickets. For each field, the question to ask and the answer that should worry you.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Agent.&lt;/strong&gt; What is it, and what is its job in one sentence? &lt;em&gt;Red flag:&lt;/em&gt; the description is a product name, not a task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Owner.&lt;/strong&gt; Which named person is accountable for its behavior and gets paged when it misbehaves? &lt;em&gt;Red flag:&lt;/em&gt; a team alias, or the person who built it and has since moved on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity.&lt;/strong&gt; Which account, key, or token does it act as? &lt;em&gt;Red flag:&lt;/em&gt; a human's personal token, or a service account shared with other systems. Its actions cannot then be told apart from anyone else's.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools.&lt;/strong&gt; Which tools, APIs, and MCP servers can it call? &lt;em&gt;Red flag:&lt;/em&gt; "whatever is configured," or a general-purpose shell.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data.&lt;/strong&gt; What data can it read, and what can it write, change, or delete? &lt;em&gt;Red flag:&lt;/em&gt; access inherited from a broad role rather than granted for the task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privileges.&lt;/strong&gt; Which consequential actions can it take without a separate approval: payments, external messages, production changes, permission grants? &lt;em&gt;Red flag:&lt;/em&gt; any of these with no gate the agent does not control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network.&lt;/strong&gt; Which destinations can it reach? &lt;em&gt;Red flag:&lt;/em&gt; unrestricted internet egress. Anthropic's agents worked around a tool restriction with a public URL shortener; a network allowlist that did not include the shortener would have refused the request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime.&lt;/strong&gt; Where does it run, how often, and for how long? &lt;em&gt;Red flag:&lt;/em&gt; on a developer laptop, or continuously with no one assigned to watch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telemetry.&lt;/strong&gt; Where are its tool calls, destinations, and control decisions logged, and who controls those logs? &lt;em&gt;Red flag:&lt;/em&gt; only in the vendor's console, under the vendor's retention policy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kill mechanism.&lt;/strong&gt; How do you stop it and revoke its credentials, how long does it take, and when was that last tested? &lt;em&gt;Red flag:&lt;/em&gt; "we would disable the API key," with no idea which other systems share it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you cannot fill in a field, you have not failed the exercise. You have found the first finding.&lt;/p&gt;

&lt;h2&gt;
  
  
  A worked example
&lt;/h2&gt;

&lt;p&gt;Here is the record for a common case: an AI coding agent that runs in the CI pipeline, fixes failing tests, and opens pull requests. The values are illustrative, typical of what a first pass finds.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent.&lt;/strong&gt; Fixes failing tests on feature branches and opens a pull request with the change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Owner.&lt;/strong&gt; Platform engineering lead, named.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity.&lt;/strong&gt; A GitHub App installation scoped to three repositories. &lt;em&gt;Finding:&lt;/em&gt; the pipeline also exposes a deploy token as an environment variable the agent can read.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools.&lt;/strong&gt; Repository read and write, test runner, package registry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data.&lt;/strong&gt; Source code and test fixtures. &lt;em&gt;Finding:&lt;/em&gt; one fixture file holds a production database snapshot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privileges.&lt;/strong&gt; Can push to feature branches. Cannot merge; branch protection requires human review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network.&lt;/strong&gt; &lt;em&gt;Finding:&lt;/em&gt; unrestricted egress from the CI runner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime.&lt;/strong&gt; Ephemeral CI runner, triggered on each failing build, about 40 runs a day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telemetry.&lt;/strong&gt; CI logs kept 30 days in the CI platform. &lt;em&gt;Finding:&lt;/em&gt; tool calls and fetched URLs are not logged.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kill mechanism.&lt;/strong&gt; Disable the GitHub App. &lt;em&gt;Finding:&lt;/em&gt; never tested, and revoking it does not revoke the deploy token.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That took less than an hour, and it produced five findings, each with an obvious fix: remove the deploy token from the job, scrub the fixture, put an egress allowlist on the runner, log tool calls to the central log platform, and add a tested revocation step to the runbook. None of them required a governance framework.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where agents hide
&lt;/h2&gt;

&lt;p&gt;The first record is easy because you chose the agent. The hard part is the ones nobody told you about. Look in these places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Your identity provider.&lt;/strong&gt; Non-human accounts, OAuth grants to AI applications, and tokens issued in the last six months.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model provider consoles.&lt;/strong&gt; API keys issued under your company's accounts, and who created them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Egress logs.&lt;/strong&gt; Outbound traffic to model API endpoints, from which hosts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD and automation platforms.&lt;/strong&gt; Jobs that call a model, and the secrets those jobs can read.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SaaS admin panels.&lt;/strong&gt; Agent features switched on inside tools you already pay for, with the permissions of whoever enabled them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer machines.&lt;/strong&gt; Coding agents and local MCP servers running with the developer's own credentials. Microsoft's discovery tooling now recognizes 60 types of local agents, including Claude Code, OpenAI Codex and GitHub Copilot. That is the scale of what can arrive without a deployment process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expense reports.&lt;/strong&gt; AI subscriptions bought on a corporate card.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each source finds agents the others miss. Run all of them once, then make the inventory a gate: no agent gets a production credential without a complete record.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the inventory unlocks
&lt;/h2&gt;

&lt;p&gt;The inventory is not the goal. It is the prerequisite for everything else.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The reconstruction test.&lt;/strong&gt; For each agent, could you rebuild its last 24 hours from your own logs? The telemetry field tells you before an incident does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Near-miss counting.&lt;/strong&gt; Blocked attempts only mean something per agent, against its declared scope.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Board reporting.&lt;/strong&gt; Directors do not need the records. They need counts: how many agents, how many with a named owner, how many with a tested kill mechanism. Our post on &lt;a href="https://codacon.ai/blog/board-questions-ai-coding-tool-rollout/" rel="noopener noreferrer"&gt;board questions before an AI coding tool rollout&lt;/a&gt; shows the format.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control mapping.&lt;/strong&gt; On October 20, NIST renamed its project to adapt SP 800-53 to these systems &lt;a href="https://csrc.nist.gov/Projects/cosis" rel="noopener noreferrer"&gt;COSIS&lt;/a&gt;: control overlays, not a separate framework. The inventory already speaks that language. Agent and owner are a component inventory (CM-8). Identity maps to IA, tools, data and privileges to AC and least privilege (AC-6), network to boundary protection (SC-7), runtime to configuration management (CM), telemetry to audit (AU), and the kill mechanism to incident response (IR). Your auditors already know these families.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy assessments.&lt;/strong&gt; Under Quebec's Law 25, the data field feeds the &lt;a href="https://codacon.ai/blog/quebec-law-25-generative-ai/" rel="noopener noreferrer"&gt;privacy impact assessment&lt;/a&gt; the law requires for information system projects involving personal information.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;p&gt;Our &lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt; starts with this inventory. We discover the agents, build the records with your owners, test the kill mechanisms, and turn every gap into a finding with an owner, a severity, and a remediation. You keep the inventory and the process to maintain it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three questions to test yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;How many agents run in your environment today? If the answer is a guess, the inventory is your first task.&lt;/li&gt;
&lt;li&gt;For your most privileged agent, could you fill all ten fields from memory, or from a document that is less than a quarter old?&lt;/li&gt;
&lt;li&gt;Which of your agents could you stop, with every credential revoked, in under fifteen minutes?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pick one agent this week and fill in its record. The first one takes an hour. It is also the first evidence that your agent governance exists outside a policy document.&lt;/p&gt;

</description>
      <category>aisecurity</category>
      <category>boardadvisory</category>
    </item>
    <item>
      <title>AI Agent Incident Response: What NIST, NSA and CISA Now Expect</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Tue, 27 Oct 2026 12:14:31 +0000</pubDate>
      <link>https://dev.to/codacon/ai-agent-incident-response-what-nist-nsa-and-cisa-now-expect-4na1</link>
      <guid>https://dev.to/codacon/ai-agent-incident-response-what-nist-nsa-and-cisa-now-expect-4na1</guid>
      <description>&lt;p&gt;In one week of October 2026, four public sources described AI agents doing things nobody asked them to do. A frontier lab reported its own models working around restrictions on the live internet. India's national CERT reported agents under evaluation reading confidential records on live corporate systems. The UK government said it will build ways to contain agentic AI incidents. And three US agencies published the first incident response practices written specifically for agents that act outside their instructions.&lt;/p&gt;

&lt;p&gt;None of this was a hypothetical red-team exercise. It is incident data. The question for any organization running agents is no longer whether an agent can leave its lane. It is whether you would notice, whether you could stop it, and whether you could reconstruct what it did.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Anthropic, October 9.&lt;/strong&gt; In &lt;a href="https://www.anthropic.com/research/investigating-unintended-model-actions" rel="noopener noreferrer"&gt;&lt;em&gt;Investigating unintended model actions&lt;/em&gt;&lt;/a&gt;, Anthropic described four behaviors observed in evaluations and internal use: exploiting a flaw in a university server to run a calculation, submitting real forms it should not have (including a fabricated tip to a police homicide form), using access tokens it found to reach gated data, and using free URL shorteners to get around the length limit on its web fetch tool. Anthropic rates the impact as minimal. The detail that matters is this one: "several of the cases we observed occurred during regular agentic use of Claude." No attacker, no jailbreak. An ambiguous objective, a capable model, and tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CERT-In, October 15.&lt;/strong&gt; India's Computer Emergency Response Team issued a critical advisory, &lt;a href="https://www.cert-in.org.in/s2cMainServlet?VLCODE=CIAD-2026-0049&amp;amp;pageid=PUBVLNOTES02" rel="noopener noreferrer"&gt;CIAD-2026-0049&lt;/a&gt;, titled &lt;em&gt;AI Agents as Attack Vectors&lt;/em&gt;. AI model providers disclosed that agents under research and evaluation had reached live systems of Indian organizations and read business records containing personal and confidential information. The agents' actions "exceeded the authorization of their assigned tasks." CERT-In named neither the providers nor the victims. None of the affected organizations detected the access. The providers did.&lt;/p&gt;

&lt;p&gt;How did the agents get in? Not through novel techniques. Through credentials and connection settings exposed in application configuration, public code repositories, and overly permissive cloud roles. The weaknesses were old. The speed and persistence of the thing exploiting them were new.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UK government, October 12.&lt;/strong&gt; In a &lt;a href="https://www.gov.uk/government/speeches/building-a-safer-more-secure-britain-in-the-age-of-ai" rel="noopener noreferrer"&gt;speech at Imperial College London&lt;/a&gt;, AI minister Kanishka Narayan said the government will work with the National Cyber Security Centre and the AI Security Institute to "develop robust ways for government to respond to agentic AI incidents," looking at "how incidents can be contained." He said the government will assess how to strengthen the Cyber Security and Resilience Bill on "identifying and reporting on serious incidents and near misses." No amendment text exists yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NIST, NSA and CISA, October 16.&lt;/strong&gt; The three agencies published &lt;a href="https://www.nist.gov/system/files/documents/2026/10/16/Key_Practices_for_Incident_Readiness_and_Response_in_Super_Intelligence%20_Training_and_Evaluation.pdf" rel="noopener noreferrer"&gt;&lt;em&gt;Key Practices for Incident Readiness and Response in Super Intelligence Training and Evaluation&lt;/em&gt;&lt;/a&gt;. That document is the subject of the rest of this post.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the key practices say
&lt;/h2&gt;

&lt;p&gt;The document was written by NIST's Center for Advancing Innovation and Standards for Super Intelligence (CAISSI), the NSA's Super Intelligence Security Center, and CISA. It is voluntary. Its primary audience is organizations training or evaluating highly capable agents on long-horizon tasks with limited supervision. But it states that "the practices may also apply to deployers of such SI agents." If you run agents with real tools and real credentials, you are reading your future audit checklist.&lt;/p&gt;

&lt;p&gt;Two definitions do most of the work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Control incident.&lt;/strong&gt; One or more agents take "significant uninstructed actions that compromise explicit or implicit policies, controls, or security measures imposed by the operator." These may occur "during agent development, evaluation, or use."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control near-miss.&lt;/strong&gt; An occurrence that did not become an incident "but presented a reasonably foreseeable or imminent risk of doing so."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The ten practices are grouped in five stages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prepare.&lt;/strong&gt; 1. Design and implement technical controls. 2. Build organizational and personnel response readiness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detect.&lt;/strong&gt; 3. Monitor for unexpected activity. 4. Validate and secure monitors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Respond.&lt;/strong&gt; 5. Collect, retain, and analyze evidence. 6. Mitigate and shut down undesired activity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recover.&lt;/strong&gt; 7. Verify and strengthen containment before resuming agent activity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report.&lt;/strong&gt; 8. Coordinate with affected parties. 9. Notify government. 10. Share information publicly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most useful thing about the document is what it does not do. It does not invent a new governance framework. It builds explicitly on NIST's &lt;a href="https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.29.pdf" rel="noopener noreferrer"&gt;Cybersecurity Framework 2.0&lt;/a&gt; and &lt;a href="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r3.pdf" rel="noopener noreferrer"&gt;SP 800-61r3&lt;/a&gt;, and tags every practice with CSF references. Your security operations center, your incident response plan, and your control catalogue already speak this language. Agents get a layer on top of them, not a parallel program.&lt;/p&gt;

&lt;h2&gt;
  
  
  The gap enterprises have to close themselves
&lt;/h2&gt;

&lt;p&gt;Read the footnote on the incident definition. Actions resulting from "an adversarial prompt injection or an intentionally backdoored model" count as &lt;em&gt;instructed&lt;/em&gt;, and are therefore not the primary cause of a control incident.&lt;/p&gt;

&lt;p&gt;That scoping makes sense for a lab studying whether its own model misbehaves. It does not work for an enterprise. When an agent with your credentials emails a customer file to an outside address, you do not get to choose whether the cause was the model's own initiative or an instruction hidden in a web page it read. At the start of an investigation, you rarely know. Both need the same containment, the same evidence, and the same notification analysis. Under Quebec's Law 25, for example, the &lt;a href="https://codacon.ai/blog/quebec-law-25-generative-ai/" rel="noopener noreferrer"&gt;notification duty&lt;/a&gt; turns on the risk of serious injury to the people affected, not on who or what decided to act.&lt;/p&gt;

&lt;p&gt;So write one runbook for agent incidents. "Was the action instructed, and by whom?" is a finding of the investigation, not a filter on whether the runbook applies.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ten practices, translated for an enterprise deployer
&lt;/h2&gt;

&lt;p&gt;Here is what each stage asks of an organization that deploys agents rather than trains models. The practice numbers refer to the source document.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prepare&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Give every agent its own identity and the least privilege its task needs, not a shared service account or a human's token (1.1).&lt;/li&gt;
&lt;li&gt;Enforce network egress with an allowlist, routed through a monitored gateway (1.5).&lt;/li&gt;
&lt;li&gt;Map the persistence and communication channels an agent could use: scheduled jobs, new credentials, outbound messages, other agents (1.4).&lt;/li&gt;
&lt;li&gt;Build a way to block, contain, or terminate agent activity quickly, and test it (1.7).&lt;/li&gt;
&lt;li&gt;Assume the agent will find your misconfigurations, because it will (1.8). CERT-In's victims were breached through exposed credentials and permissive cloud roles.&lt;/li&gt;
&lt;li&gt;Define indicators and severity levels for agent incidents and near-misses, and run a tabletop exercise on one (2.1, 2.2).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Detect&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write down the intended scope of each agent: which systems, which networks, which actions. You cannot detect a deviation from a baseline nobody defined (3.1).&lt;/li&gt;
&lt;li&gt;Monitor at every layer you control: the harness, the host, the network, and the identity provider (3.2).&lt;/li&gt;
&lt;li&gt;Make sure the agent cannot read, alter, or switch off its own logs and monitors (3.3).&lt;/li&gt;
&lt;li&gt;Place canaries, such as decoy credentials or records, that only an out-of-scope agent would touch (3.5).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Respond&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retain tamper-resistant logs with reliable timestamps, enough to reconstruct the agent's trajectory, tool calls, user interactions, and security-control decisions (5.3).&lt;/li&gt;
&lt;li&gt;Keep the &lt;em&gt;rejected&lt;/em&gt; actions and tool calls, not only the successful ones (5.1). Blocked attempts are your near-miss data.&lt;/li&gt;
&lt;li&gt;On detection, shut down the affected agent runs automatically, then pause similar agents until controls are verified (6.2, 6.3).&lt;/li&gt;
&lt;li&gt;Revoke every credential the agent touched and rebuild what it may have changed (6.4).&lt;/li&gt;
&lt;li&gt;Hunt for persistence: new keys, scheduled tasks, modified code, hidden channels (6.5).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recover&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rebuild from verified baselines: harness code, container images, tool configuration (7.1).&lt;/li&gt;
&lt;li&gt;Before restarting, prove that logging, egress rules, shutdown, and permission limits actually work (7.3).&lt;/li&gt;
&lt;li&gt;Replay the incident against the new controls to confirm they would have stopped it (7.4). Anthropic did exactly this: its new detection tooling blocked every case it was tested against.&lt;/li&gt;
&lt;li&gt;Record the restart decision and the residual risk someone accepted (7.5).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Report&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notify the owners of any system your agent touched, including third parties who were not the target (8.1).&lt;/li&gt;
&lt;li&gt;Meet your legal reporting duties: privacy regulators, sector regulators, contracts (9.1).&lt;/li&gt;
&lt;li&gt;Feed lessons back to your model and platform vendors (8.3).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The reconstruction test
&lt;/h2&gt;

&lt;p&gt;CERT-In's advisory contains the most uncomfortable fact of the month: the organizations whose systems were accessed did not detect it. They learned about it because the AI providers disclosed it.&lt;/p&gt;

&lt;p&gt;Turn that into an acceptance criterion for every agent deployment:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If your model provider disappeared tomorrow, could you reconstruct your agent's last 24 hours of activity from your own records?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Passing means you hold, in systems you control:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which identity the agent acted as, and who it was acting for&lt;/li&gt;
&lt;li&gt;Every tool call, with its parameters and its result&lt;/li&gt;
&lt;li&gt;Every network destination it reached or tried to reach&lt;/li&gt;
&lt;li&gt;What data it read, and what it wrote, changed, or deleted&lt;/li&gt;
&lt;li&gt;Every control decision: allowed, blocked, escalated to a human&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Provider-side logs are useful. They are not your evidence. They answer to someone else's retention policy, someone else's priorities, and someone else's incident. CERT-In's own recommendation for organizations running agents is a short-lived, least-privilege identity per run, default-deny egress, and "a tamper-resistant log of agent activity," with logs retained for at least 180 days.&lt;/p&gt;

&lt;h2&gt;
  
  
  The agent can act, but it cannot authorize itself
&lt;/h2&gt;

&lt;p&gt;Look again at Anthropic's cases. A fetch tool had a length limit. The model used a URL shortener. A form was off-limits. The model found the real one when the practice copy failed to load. Anthropic describes these as forms of persistence: the model works around a restriction instead of stopping.&lt;/p&gt;

&lt;p&gt;That is the behavior to design for. A restriction that the agent can read, reason about, and route around is a speed bump, not a boundary. The key practices put clear task instructions at 1.3, one practice among ten. Everything else is enforced outside the model.&lt;/p&gt;

&lt;p&gt;The architectural rule follows: the agent can act, but it cannot authorize itself. Consequential actions, such as payments, external communications, production changes, permission grants, and access to new data stores, pass through a gate the agent does not control. A deterministic policy check, a human approval, or both. The agent can request. Something else decides.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start counting near-misses now
&lt;/h2&gt;

&lt;p&gt;The key practices define near-misses and ask organizations to report them. The UK is considering near-miss reporting in law. Whatever your jurisdiction does, the data is valuable to you first.&lt;/p&gt;

&lt;p&gt;Add two fields to your incident and alert records:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent attempted an unauthorized action:&lt;/strong&gt; yes or no&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control prevented impact:&lt;/strong&gt; which control, or none&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over a quarter, those two fields tell you whether your agents are probing boundaries more or less often, and which controls do the catching. If your egress allowlist blocks forty attempts a month and your approval gate never fires, you have learned where your real boundary is. If the "control prevented impact" field keeps saying "none," you have learned something more urgent.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt;.&lt;/strong&gt; A fixed-scope review of your agents' identities, tool permissions, network egress, logging, and kill mechanisms, with findings mapped to the key practices and to CSF 2.0, each with an owner and a remediation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent incident readiness.&lt;/strong&gt; An agent-specific runbook built on top of your existing incident response plan, and a tabletop exercise that tests it against a realistic scenario: an agent with valid credentials doing something no one asked for.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Board advisory.&lt;/strong&gt; A one-page view of agent exposure for directors. Our post on &lt;a href="https://codacon.ai/blog/board-questions-ai-coding-tool-rollout/" rel="noopener noreferrer"&gt;questions a board should ask before an AI coding tool rollout&lt;/a&gt; shows the format.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Five questions to test yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Can you list every agent running in your environment today, with an owner for each?&lt;/li&gt;
&lt;li&gt;Does each agent have its own identity, or does it act with a human's token or a shared service account?&lt;/li&gt;
&lt;li&gt;If an agent tried to reach an unapproved destination this morning, which control would have blocked it, and where is the record?&lt;/li&gt;
&lt;li&gt;How long would it take to stop every agent instance and revoke every credential they hold, and when did you last test it?&lt;/li&gt;
&lt;li&gt;Could you pass the reconstruction test for your most privileged agent without asking your vendor for anything?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you hesitated on two of them, your agents are ahead of your incident response plan. That gap is cheaper to close before the first incident than during it.&lt;/p&gt;

</description>
      <category>aisecurity</category>
      <category>incidentresponse</category>
    </item>
    <item>
      <title>Quebec Law 25 and Generative AI: What to Settle Before Production</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Wed, 21 Oct 2026 01:49:28 +0000</pubDate>
      <link>https://dev.to/codacon/quebec-law-25-and-generative-ai-what-to-settle-before-production-58j1</link>
      <guid>https://dev.to/codacon/quebec-law-25-and-generative-ai-what-to-settle-before-production-58j1</guid>
      <description>&lt;p&gt;If you run a Quebec company, you are probably its person in charge of the protection of personal information. Law 25 gives that role to the person with the highest authority by default, whether or not anyone told you (section 3.1).&lt;/p&gt;

&lt;p&gt;Now read the list of failures that can draw an administrative monetary penalty (section 90.1). Two of the five that apply to most companies are not legal paperwork. They are engineering: failing to take reasonable security measures, and failing to handle decisions made by automated processing. Generative AI touches both.&lt;/p&gt;

&lt;p&gt;Law 25 was not written with large language models in mind. It applies to them anyway, and the regulator has already said so in writing. Here is where Law 25 and generative AI meet, what each obligation asks of an AI system, and what the Commission d'accès à l'information has actually decided.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Law 25 is
&lt;/h2&gt;

&lt;p&gt;Law 25 is the common name for &lt;a href="https://www.publicationsduquebec.gouv.qc.ca/fileadmin/Fichiers_client/lois_et_reglements/LoisAnnuelles/en/2021/2021C25A.PDF" rel="noopener noreferrer"&gt;&lt;em&gt;An Act to modernize legislative provisions as regards the protection of personal information&lt;/em&gt;&lt;/a&gt; (S.Q. 2021, c. 25). It amended Quebec's &lt;a href="https://www.legisquebec.gouv.qc.ca/en/document/cs/P-39.1" rel="noopener noreferrer"&gt;private sector privacy act&lt;/a&gt; and its public sector equivalent. It was phased in mainly between September 2022 and September 2024. Everything below is in force today.&lt;/p&gt;

&lt;p&gt;The regulator is the &lt;a href="https://www.cai.gouv.qc.ca/" rel="noopener noreferrer"&gt;Commission d'accès à l'information&lt;/a&gt; (CAI). Administrative monetary penalties reach $10 million or 2% of worldwide turnover, whichever is greater (section 90.12). Penal fines reach $25 million or 4%, doubled for a subsequent offence (sections 91 and 92.1). Individuals can also sue: where an unlawful infringement is intentional or results from gross fault, the court must award punitive damages of at least $1,000 (section 93.1).&lt;/p&gt;

&lt;p&gt;Section references below are to the private sector act. We are security practitioners, not lawyers. This post explains how the obligations translate into AI architecture and controls; your counsel decides how they apply to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the record shows so far
&lt;/h2&gt;

&lt;p&gt;We reviewed the CAI's published decisions, its annual and five-year reports, and the joint investigations it conducts with the federal Privacy Commissioner. As of October 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No published administrative monetary penalty.&lt;/strong&gt; The CAI has had the power since September 2023. Its decisions page and annual reports show orders, not fines. Be wary of blog posts listing "real" Law 25 fines: the ones we traced were composites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No decision interpreting section 12.1&lt;/strong&gt;, the automated decision rule. The CAI has issued guidance and law reform recommendations, not rulings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plenty of orders on AI and biometrics.&lt;/strong&gt; The CAI has ordered organizations to stop systems, destroy data, notify people, and report on algorithmic bias. Several of those decisions are cited below.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Volume is real.&lt;/strong&gt; The CAI received 514 confidentiality incident notices in 2024–2025, 80% from the private sector (&lt;a href="https://www.cai.gouv.qc.ca/uploads/pdfs/CAI_RAAG-2024-2025.pdf" rel="noopener noreferrer"&gt;annual report 2024–2025&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The absence of fines is not a reason to wait. Orders to shut down a system after it is built are expensive, and class actions do not need a CAI decision to proceed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the penalty provisions as a scope
&lt;/h2&gt;

&lt;p&gt;Section 90.1 lists what can draw an administrative monetary penalty for most companies: failing to inform people about collection, collecting, using, communicating, keeping, or destroying personal information unlawfully, failing to report a confidentiality incident, &lt;strong&gt;failing to take the security measures required by section 10&lt;/strong&gt;, and &lt;strong&gt;failing to inform a person of an automated decision or let them submit observations under section 12.1&lt;/strong&gt;. A sixth ground applies only to personal information agents.&lt;/p&gt;

&lt;p&gt;The act also tells you how penalties and fines are weighed. The CAI must first send a notice of non-compliance and let you respond (sections 90.3 and 90.4). At any time after a failure, you can offer an undertaking to remedy it; if the CAI accepts it and you comply, no penalty can be imposed for those acts (section 90.1). Its criteria include the measures you took to remedy the failure and your cooperation (section 90.2). For penal fines, a judge weighs whether the offence was foreseeable, whether you &lt;strong&gt;failed to follow recommendations or warnings&lt;/strong&gt; to prevent it, and whether you failed to take reasonable preventive measures (section 92.3).&lt;/p&gt;

&lt;p&gt;Two consequences follow. A security assessment whose findings sit in a drawer is worse than none: it proves the risk was foreseeable. And when a notice arrives, a credible, sequenced remediation plan is what an undertaking is built on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not sure which of your AI systems this reaches?&lt;/strong&gt; &lt;a href="https://calendar.app.google/pB6QWiu87k8PqikL8" rel="noopener noreferrer"&gt;Book a 30-minute call&lt;/a&gt;. Bring one system; you leave knowing which obligations below apply to it and your top three gaps.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. A privacy impact assessment before you build
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What the law says.&lt;/strong&gt; Any project to acquire, develop, or overhaul an information system or electronic service delivery system involving personal information requires a privacy impact assessment (section 3.3). The person in charge of the protection of personal information must be consulted from the outset of the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it means for AI.&lt;/strong&gt; A RAG assistant, a copilot connected to your CRM, or an agent with access to a mailbox is exactly that kind of project. The assessment has to cover what the model can read, not just what users type. A retrieval index built over a shared drive inherits every piece of personal information on that drive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the record.&lt;/strong&gt; In &lt;a href="https://www.cai.gouv.qc.ca/uploads/pdfs/decisions-en-surveillance/1020040-S_decision-cai-centre-services-scolaire-val-cerfs-2022-11-09.pdf" rel="noopener noreferrer"&gt;&lt;em&gt;Centre de services scolaire du Val-des-Cerfs&lt;/em&gt;&lt;/a&gt; (November 2022), a school service centre built a machine learning tool to predict grade 6 dropout risk. The CAI held that the predictions were new personal information, so producing them was a &lt;em&gt;collection&lt;/em&gt;, and that a privacy impact assessment should have been done before deployment. In its &lt;a href="https://www.cai.gouv.qc.ca/uploads/pdfs/CAI_RQ_2026.pdf" rel="noopener noreferrer"&gt;2026 five-year report&lt;/a&gt;, the CAI recommends that assessments of AI systems making decisions about people include an algorithmic impact analysis. The &lt;a href="https://www.cai.gouv.qc.ca/uploads/pdfs/CAI_GU_EFVP.pdf" rel="noopener noreferrer"&gt;CAI's PIA guide&lt;/a&gt; is the starting template.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning sign.&lt;/strong&gt; The PIA is drafted after the pilot, describes the vendor's product page, and never mentions embeddings, logs, model outputs, or tool access.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Sending personal information outside Quebec
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What the law says.&lt;/strong&gt; Before communicating personal information outside Quebec, an organization must conduct a privacy impact assessment covering the information's sensitivity, the purposes, the protection measures including contractual ones, and the legal framework of the destination (section 17). The information may go only if it would receive adequate protection, and the transfer needs a written agreement that reflects the assessment. The same applies when you entrust a provider outside Quebec with collecting, using, communicating, or keeping the information on your behalf. Wherever the provider is, section 18.3 requires a written contract that specifies its protection measures and bars it from keeping the information after the contract ends. The provider must notify your person in charge without delay of any violation or &lt;em&gt;attempted&lt;/em&gt; violation of confidentiality, and let them verify compliance. Few standard AI vendor terms say that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it means for AI.&lt;/strong&gt; Most hosted model APIs process prompts outside Quebec, often outside Canada. Every prompt carrying personal information is a communication outside Quebec. So is a cloud vector database in another region, a managed logging service, or an evaluation tool that stores conversation samples.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the record.&lt;/strong&gt; The reach runs both ways. In the &lt;a href="https://www.priv.gc.ca/en/opc-actions-and-decisions/investigations/investigations-into-businesses/2026/pipeda-2026-002/" rel="noopener noreferrer"&gt;joint investigation of OpenAI&lt;/a&gt; (May 2026), the CAI found that Quebec's act applied to OpenAI even though it had no establishment or employees in Quebec. In &lt;a href="https://www.cai.gouv.qc.ca/uploads/pdfs/decisions-en-surveillance/1023158-S_decision-cai-clearview-ai-inc-2021-12-14.pdf" rel="noopener noreferrer"&gt;&lt;em&gt;Clearview AI&lt;/em&gt;&lt;/a&gt; (December 2021), it ordered a US company to stop collecting Quebecers' facial images. Your foreign provider is within the CAI's reach. So are you, for choosing it. We found no decision yet that turns on section 17 itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning sign.&lt;/strong&gt; Nobody can say which region processes inference, or whether the "data residency" option covers prompts, completions, logs, and abuse monitoring, or only data at rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Decisions made by automated processing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What the law says.&lt;/strong&gt; An organization that uses personal information to render a decision based exclusively on automated processing must inform the person no later than when it informs them of the decision (section 12.1). On request, it must disclose the personal information used, the reasons and the principal factors and parameters that led to the decision, and the right to have the information corrected. The person must be able to submit observations to a staff member in a position to review the decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it means for AI.&lt;/strong&gt; Screening job applicants, triaging insurance claims, scoring credit, or flagging accounts for closure with a model all qualify when no human meaningfully reviews the outcome. The &lt;a href="https://cai.gouv.qc.ca/protection-renseignements-personnels/information-entreprises-privees/utilisation-communication-renseignements-personnels" rel="noopener noreferrer"&gt;CAI's guidance&lt;/a&gt; gives credit decisions, financial aid assessments, and prioritizing a request as examples. "Principal factors and parameters" is hard to produce from an LLM after the fact. It has to be designed in: logged inputs, retrieved sources, and a decision record a reviewer can read. Section 11 adds a floor: information used to make a decision about a person must be accurate when used and kept for at least one year after the decision. A model that decides today needs a decision record that still exists next October.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the record.&lt;/strong&gt; No decision interprets section 12.1 yet, but the CAI has shown what algorithmic accountability looks like to it. In its &lt;a href="https://www.cai.gouv.qc.ca/uploads/pdfs/decisions-en-surveillance/1037199-S_decision-cai-metro-inc-2026-04-01.pdf" rel="noopener noreferrer"&gt;April 2026 &lt;em&gt;Metro&lt;/em&gt; decision&lt;/a&gt; on facial recognition in grocery and pharmacy stores, it ordered the company to report every six months for two years on the systems' effectiveness, false positives, and algorithmic bias. Expect the same questions about any model that decides things about people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning sign.&lt;/strong&gt; The human in the loop approves 99% of model recommendations in under ten seconds. That is automated processing with a signature.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Profiling and privacy by default
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What the law says.&lt;/strong&gt; An organization that collects personal information using technology with functions to identify, locate, or profile a person must inform them beforehand and explain how to activate those functions (section 8.1). Technological products and services offered to the public must apply the highest level of confidentiality by default, without any action by the user (section 9.1). Browser cookies are excluded.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it means for AI.&lt;/strong&gt; Personalization, sentiment analysis, and behavioural inference built into a customer-facing assistant are profiling. Training on user conversations, and conversation memory across sessions, are privacy settings. The feature ships off, and the user turns it on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the record.&lt;/strong&gt; This is where the CAI has been most direct about AI. In the OpenAI investigation, it found that training models on ChatGPT conversations by default breached section 9.1, despite the information OpenAI gave users. In the &lt;a href="https://www.priv.gc.ca/en/opc-actions-and-decisions/investigations/investigations-into-businesses/2025/pipeda-2025-003/" rel="noopener noreferrer"&gt;joint TikTok investigation&lt;/a&gt; (September 2025), it found that profiling functions were not off by default, in breach of sections 8.1 and 9.1. It rejected TikTok's argument that settings designed for the European GDPR satisfied section 9.1: the Quebec rule is worded differently.&lt;/p&gt;

&lt;p&gt;Biometrics carry their own lead time. Law 25 amended the &lt;a href="https://www.legisquebec.gouv.qc.ca/en/document/cs/C-1.1" rel="noopener noreferrer"&gt;IT framework act&lt;/a&gt; so that a biometric database, such as facial or voice templates, must be disclosed to the CAI at least 60 days before it goes into service (section 45). That disclosure is what put the &lt;em&gt;Metro&lt;/em&gt; project in front of the CAI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning sign.&lt;/strong&gt; The product team describes long-term memory or "help improve the model" as an opt-out, and nobody has asked whether it is on by default.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Secondary use and training data
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What the law says.&lt;/strong&gt; Personal information may be used only for the purposes for which it was collected, unless the person consents or a specific exception applies (section 12). Sensitive information requires express consent. One exception covers study, research, or statistics using de-identified information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it means for AI.&lt;/strong&gt; Using support transcripts to fine-tune a model, or loading customer files into a general-purpose knowledge assistant, is a new use. That analysis belongs before the training run, not after.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the record.&lt;/strong&gt; In the OpenAI investigation, the CAI accepted that training a language model can be a legitimate purpose, but found the collection overbroad. It also held that information published on the web is not "public" under the act just because it can be scraped. In &lt;em&gt;Val-des-Cerfs&lt;/em&gt;, student records collected for schooling were reused to train a prediction tool without consent or notice, and the CAI ordered the school service centre to inform parents. Inferences stay in play afterwards: a person's right of access covers all the information you hold on them (section 27). Only portability, the export in a structured format, excludes information "created or inferred" from their data. The courts are asking the same question: in &lt;em&gt;Badji&lt;/em&gt;, below, the Superior Court left for trial whether algorithmic profiles are themselves new personal information (para. 43).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning sign.&lt;/strong&gt; The training dataset was assembled by an engineer with production read access and a deadline.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Confidentiality incidents
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What the law says.&lt;/strong&gt; When an organization has reason to believe a confidentiality incident has occurred, it must take reasonable measures to reduce the risk of injury and prevent new incidents. If the incident presents a risk of serious injury, it must promptly notify the CAI and the affected individuals (section 3.5). Section 3.6 defines an incident, section 3.7 sets how to assess the risk, and section 3.8 requires a register of every incident, reported or not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it means for AI.&lt;/strong&gt; Generative AI creates new incident paths. A prompt injection that makes an assistant reveal another customer's file is unauthorized communication of personal information. So is a retrieval system that returns documents the user was never authorized to see, or a leaked API key that exposes conversation logs. Your incident response plan needs to recognize them, and your logs need to show what the model actually returned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the record.&lt;/strong&gt; 514 incident notices reached the CAI in a single year. The regulator is used to them. What it will ask about an AI incident is what you can reconstruct: which documents were retrieved, what was returned, and to whom.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning sign.&lt;/strong&gt; The AI system is out of scope for the incident response plan, or its logs record the prompt but not the retrieved documents and the output.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Retention and destruction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What the law says.&lt;/strong&gt; When the purposes are achieved, personal information must be destroyed or anonymized according to the anonymization regulation in force since May 2024 (section 23). The organization's governance policies must frame retention and destruction (section 3.2).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it means for AI.&lt;/strong&gt; Personal information persists in more places in an AI stack than in a classic application: prompt logs, vendor abuse monitoring stores, embeddings, caches, evaluation sets, and fine-tuned weights. You cannot destroy what you have not inventoried, and you cannot easily remove one person from a fine-tuned model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the record.&lt;/strong&gt; Destruction is the CAI's standard remedy. It ordered Clearview AI to destroy the images and biometric vectors it held on Quebecers within 90 days, and ordered &lt;a href="https://www.cai.gouv.qc.ca/uploads/pdfs/decisions-en-surveillance/1024350-S_decision-cai-societe-imprimeries-transcontinental-inc-2024-09-04.pdf" rel="noopener noreferrer"&gt;Transcontinental&lt;/a&gt; (September 2024) to shut down an employee facial recognition system and destroy the templates. An order to destroy is cheap to comply with only if you know where every copy lives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning sign.&lt;/strong&gt; A deletion request is honoured in the CRM while the same customer's emails remain in the vector index.&lt;/p&gt;

&lt;h2&gt;
  
  
  The courts are moving too
&lt;/h2&gt;

&lt;p&gt;Class actions do not wait for the CAI. In &lt;em&gt;Badji c. Zenleads inc.&lt;/em&gt; (2026 QCCS 5), the Superior Court &lt;a href="https://www.registredesactionscollectives.quebec/fr/Fichier/Document?NomFichier=16313.pdf" rel="noopener noreferrer"&gt;authorized a class action&lt;/a&gt; on January 5, 2026 against the company behind the Apollo.io sales-prospecting platform. The court wrote that loss of control over the use of data and algorithmic profiling "can, in themselves, cause harm" (para. 72), and found the conditions for punitive damages under section 93.1 met at this stage (paras. 81–82). Whether the defendant &lt;em&gt;profiled&lt;/em&gt; class members in breach of the act is one of the questions set for trial (para. 103). The Court of Appeal has since granted leave to appeal, with a hearing scheduled for November 2026 (&lt;a href="https://www.osler.com/en/insights/blogs/classactions/privacy-class-actions-the-professional-information-exception-under-scrutiny-in-quebec/" rel="noopener noreferrer"&gt;Osler&lt;/a&gt;). The judgment also cites &lt;em&gt;Doan c. Clearview AI inc.&lt;/em&gt; (2024 QCCS 3968), a Quebec class action over scraped facial images. Neither case has been decided on the merits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accountability sits at the top
&lt;/h2&gt;

&lt;p&gt;As noted at the top, the person with the highest authority, usually the CEO, holds the role of person in charge of the protection of personal information by default (section 3.1). That role can be delegated in writing, but the accountability does not disappear. The title and contact information must be published on the organization's website.&lt;/p&gt;

&lt;p&gt;That is why Law 25 is a board topic, not only a compliance one. Directors should expect to see where AI systems process personal information, which ones have a completed PIA, and what incidents were recorded. Our post on &lt;a href="https://codacon.ai/blog/board-questions-ai-coding-tool-rollout/" rel="noopener noreferrer"&gt;questions a board should ask before an AI coding tool rollout&lt;/a&gt; applies the same discipline to a different decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we help
&lt;/h2&gt;

&lt;p&gt;We work alongside your privacy officer and legal counsel. They interpret the law; we make sure the system does what the PIA says it does.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://codacon.ai/services/genai-security-readiness/" rel="noopener noreferrer"&gt;GenAI Security Readiness Assessment&lt;/a&gt;.&lt;/strong&gt; A four-week, fixed-scope review of your AI architecture, data flows, identity model, and providers, including whether your AI vendor terms meet section 18.3. Findings are mapped to Law 25 alongside NIST, ISO, and OWASP references, with an owner and a remediation for each. It produces the technical evidence a section 3.3 PIA and a section 17 assessment need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure architecture and AI-driven SDLC.&lt;/strong&gt; Threat modeling at design time, so data residency, retention, access control on retrieval, privacy-protective defaults, and decision logging are built in rather than retrofitted. See &lt;a href="https://codacon.ai/services/" rel="noopener noreferrer"&gt;our services&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remediation plans.&lt;/strong&gt; When a finding, an incident, or a notice of non-compliance lands, we turn it into a sequenced, owned, and dated plan your counsel can put in front of the CAI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incident response.&lt;/strong&gt; Playbooks and tabletop exercises for AI-specific incidents such as prompt injection, retrieval leakage, and exposed keys, with a clear path to the "risk of serious injury" assessment and CAI notification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Board advisory.&lt;/strong&gt; Briefings for CEOs and directors who carry Law 25 accountability, and a reporting format that shows AI privacy exposure in one page.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Five questions to test yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Which of your AI systems make a decision about a person with no meaningful human review?&lt;/li&gt;
&lt;li&gt;For a decision a model made eleven months ago, can you produce the inputs it used and the sources it retrieved?&lt;/li&gt;
&lt;li&gt;Do your AI vendor contracts require the vendor to tell you about &lt;em&gt;attempted&lt;/em&gt; breaches, and let you verify?&lt;/li&gt;
&lt;li&gt;Is training on user data, or memory across sessions, off by default in every AI product you offer the public?&lt;/li&gt;
&lt;li&gt;If a prompt injection exposed one customer's file to another today, would your incident plan recognize it, and could you tell the CAI what was returned?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you hesitated on two of them, that is the conversation to have before production, not after a notice. &lt;a href="https://calendar.app.google/pB6QWiu87k8PqikL8" rel="noopener noreferrer"&gt;Book a 30-minute call&lt;/a&gt;: bring one AI system, and leave with the obligations that apply to it and your top three gaps.&lt;/p&gt;

</description>
      <category>aisecurity</category>
      <category>boardadvisory</category>
      <category>incidentresponse</category>
    </item>
    <item>
      <title>Why Use NIST OSCAL? Compliance as Data, Not Documents</title>
      <dc:creator>Codacon</dc:creator>
      <pubDate>Wed, 14 Oct 2026 23:47:20 +0000</pubDate>
      <link>https://dev.to/codacon/why-use-nist-oscal-compliance-as-data-not-documents-2104</link>
      <guid>https://dev.to/codacon/why-use-nist-oscal-compliance-as-data-not-documents-2104</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it is.&lt;/strong&gt; &lt;a href="https://pages.nist.gov/OSCAL/" rel="noopener noreferrer"&gt;OSCAL&lt;/a&gt;, the Open Security Controls Assessment Language, is an open standard from NIST. It expresses security controls, system security plans, assessments, and remediation plans as structured data in XML, JSON, or YAML. It is free, open source, and &lt;a href="https://github.com/usnistgov/OSCAL" rel="noopener noreferrer"&gt;developed in the open on GitHub&lt;/a&gt;. The latest release at time of writing is v1.2.3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why use it.&lt;/strong&gt; Most compliance work still lives in Word documents and spreadsheets that are out of date the day they are signed. OSCAL turns that paperwork into data that tools can validate, compare, and update. Write a control implementation once and reuse it across frameworks. Hand assessors evidence they can process by machine. Move from an annual snapshot toward continuous assurance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why now.&lt;/strong&gt; Regulators are publishing controls as data. US federal cloud authorization is moving toward machine-readable packages, Canada's control catalogues descend from the NIST controls OSCAL was built around, and Germany now publishes its national baseline natively in OSCAL. Meanwhile the number of frameworks you answer to only grows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem OSCAL solves
&lt;/h2&gt;

&lt;p&gt;Ask a security team how many frameworks it reports against. SOC 2, ISO 27001, NIST SP 800-53, CIS, provincial privacy law, customer questionnaires, and now AI-specific frameworks. Each one gets its own document, its own spreadsheet, and its own late-night copy-and-paste session before the audit.&lt;/p&gt;

&lt;p&gt;The underlying facts barely change between them. Multi-factor authentication is enforced the same way whether ISO or SOC 2 asks about it. Yet the same answer is rewritten for each framework, in prose no tool can check, by people who would rather be fixing things.&lt;/p&gt;

&lt;p&gt;That model has three failures:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Drift.&lt;/strong&gt; The document says one thing, the system does another, and nobody notices until an assessor or an attacker does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duplication.&lt;/strong&gt; Every new framework multiplies the work instead of reusing what is already known.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opacity.&lt;/strong&gt; A 300-page PDF cannot be queried. "Which controls depend on this identity provider?" takes a week to answer.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What OSCAL actually is
&lt;/h2&gt;

&lt;p&gt;NIST &lt;a href="https://csrc.nist.gov/projects/open-security-controls-assessment-language" rel="noopener noreferrer"&gt;describes OSCAL&lt;/a&gt; as a set of formats that give a standardized, machine-readable representation of control information, from catalogs to assessment results. The models fall into three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Control layer.&lt;/strong&gt; &lt;em&gt;Catalogs&lt;/em&gt; hold the control definitions, such as NIST SP 800-53. &lt;em&gt;Profiles&lt;/em&gt; select and tailor controls into a baseline, such as Moderate or your own internal standard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementation layer.&lt;/strong&gt; &lt;em&gt;Component definitions&lt;/em&gt; describe how a product or service satisfies controls. A &lt;em&gt;system security plan&lt;/em&gt; (SSP) describes how a specific system implements its baseline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assessment layer.&lt;/strong&gt; &lt;em&gt;Assessment plans&lt;/em&gt;, &lt;em&gt;assessment results&lt;/em&gt;, and &lt;em&gt;plans of action and milestones&lt;/em&gt; (POA&amp;amp;M) record what was tested, what was found, and what is being fixed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://codacon.ai/img/diagrams/oscal-layers.en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8zuih4n36ctg30k2exh8.png" alt="OSCAL layers: a profile imports a catalog; component definitions reference a profile; a system security plan imports a profile and reuses component definitions; the assessment plan and POA&amp;amp;M import the SSP; assessment results import the assessment plan." width="800" height="1189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each layer references the one above it. An SSP points to a profile, which points to a catalog. An assessment result points to the SSP. That chain of references is the point: change a control, and you can trace every system and finding it touches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why organizations should use it
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Write once, map many times
&lt;/h3&gt;

&lt;p&gt;Describe how your platform enforces encryption at rest as a component definition. Reference it from every system that uses the platform. When a framework or a customer asks, the answer comes from the same source, not a fresh rewrite.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codacon.ai/img/diagrams/write-once.en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg2w8vhuy8yvyz5d41l8k.png" alt="Shared components such as identity, logging, and encryption are described once, used by each system security plan, and mapped to each framework: NIST SP 800-53, ISO 27001, and SOC 2." width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Documentation that can be checked
&lt;/h3&gt;

&lt;p&gt;OSCAL content validates against published schemas. A missing control, a broken reference, or a parameter left blank is caught by a tool, not by an assessor three weeks before your deadline. That changes compliance from a writing exercise into something closer to software, with versions, reviews, and automated checks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vendor and supplier assurance at scale
&lt;/h3&gt;

&lt;p&gt;If your cloud and SaaS providers publish component definitions, you inherit their control descriptions as data instead of re-reading their PDFs. The same applies in reverse: if you sell to regulated buyers, a clean OSCAL package shortens their review of you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continuous assurance instead of annual theatre
&lt;/h3&gt;

&lt;p&gt;Once controls, systems, and findings are linked as data, evidence from your pipelines and cloud configuration can feed assessment results directly. Status becomes a query, not a project. This is where OSCAL meets the rest of a modern &lt;a href="https://codacon.ai/blog/board-questions-ai-coding-tool-rollout/" rel="noopener noreferrer"&gt;secure software development lifecycle&lt;/a&gt;: compliance becomes another artifact the pipeline produces and checks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codacon.ai/img/diagrams/continuous-assurance.en.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcgn5xwgvlldya9qoz1ug.png" alt="Continuous assurance loop: a change is validated by the pipeline, automated checks collect evidence, assessment results update, the POA&amp;amp;M tracks open findings, and each finding is either fixed in the next change or granted an exception with an owner and deadline, which reopens the finding in the POA&amp;amp;M when the deadline arrives." width="800" height="1180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Exceptions become data, too
&lt;/h3&gt;

&lt;p&gt;Every program has controls it cannot meet as written: a legacy system that cannot take multi-factor authentication, a scanner finding that turns out to be a false positive, a risk the business decides to accept. In most organizations these exceptions live in email threads and a spreadsheet tab. They rarely have an expiry date, the approver has often moved on, and nobody looks at them again until an assessor asks.&lt;/p&gt;

&lt;p&gt;OSCAL records exceptions inside the risk record, not beside it. A risk in a POA&amp;amp;M moves through statuses such as &lt;code&gt;open&lt;/code&gt;, &lt;code&gt;remediating&lt;/code&gt;, &lt;code&gt;deviation-requested&lt;/code&gt;, &lt;code&gt;deviation-approved&lt;/code&gt;, and &lt;code&gt;closed&lt;/code&gt;. Its response is typed as avoid, mitigate, transfer, share, or accept. Properties flag a risk as a false positive, accepted, or risk-adjusted, and a risk log records each status change, who logged it, and when. Because the risk references the finding, the control, and the system, an exception never drifts away from what it excuses.&lt;/p&gt;

&lt;p&gt;The payoff is the same as everywhere else in OSCAL: questions become queries. Which accepted risks reach their deadline this quarter? Which systems carry exceptions against the same control? Who approved this deviation, and on what evidence? Give every exception a deadline and the pipeline can flag it for review before it quietly becomes permanent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Regulatory direction of travel
&lt;/h3&gt;

&lt;p&gt;Machine-readable assurance is no longer a US-only idea. Where you sit changes the details, not the direction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;United States.&lt;/strong&gt; FedRAMP's &lt;a href="https://www.fedramp.gov/rfcs/0024/" rel="noopener noreferrer"&gt;RFC-0024&lt;/a&gt; proposes that Rev5 cloud providers submit authorization packages in an approved machine-readable format, with OSCAL named as one, starting with new submissions on September 30, 2026. Check FedRAMP's final rules for the scope and dates that apply to you. NIST also publishes its own catalogs, including SP 800-53 and SP 800-171, as &lt;a href="https://github.com/usnistgov/oscal-content" rel="noopener noreferrer"&gt;OSCAL content&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Canada.&lt;/strong&gt; The federal control catalogue, &lt;a href="https://www.cyber.gc.ca/en/guidance/annex-3a-security-control-catalogue-itsg-33" rel="noopener noreferrer"&gt;ITSG-33&lt;/a&gt;, is based on NIST SP 800-53, so it maps naturally onto OSCAL's catalog and profile model. The Canadian Centre for Cyber Security has not published an official OSCAL edition, but AWS has &lt;a href="https://aws.amazon.com/blogs/security/using-oscal-to-express-canadian-cybersecurity-requirements-as-compliance-as-code/" rel="noopener noreferrer"&gt;encoded the CCCS Medium and Protected B High Value Assets cloud profiles in OSCAL&lt;/a&gt; as open samples. For defence suppliers, the &lt;a href="https://www.canada.ca/en/public-services-procurement/news/2026/04/canadian-program-for-cyber-security-certification-level-1.html" rel="noopener noreferrer"&gt;Canadian Program for Cyber Security Certification&lt;/a&gt; (CPCSC) rests on a standard technically identical to NIST SP 800-171, which NIST already publishes in OSCAL. Level 1 self-assessments enter select defence contracts from summer 2026, and Level 2 third-party certification from spring 2027.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quebec.&lt;/strong&gt; Nothing in Quebec requires OSCAL today. But Quebec organizations already carry structured obligations that live badly in documents: public bodies answer to the &lt;a href="https://www.quebec.ca/gouvernement/ministeres-organismes/cybersecurite-numerique/publications/dispositions-securite-information" rel="noopener noreferrer"&gt;government's information security directive and framework&lt;/a&gt;, and Law 25 requires, among other things, privacy impact assessments for certain projects and a register of confidentiality incidents. OSCAL lets you model those obligations as your own catalog, alongside ISO 27001 or ITSG-33, and answer each from the same evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Europe.&lt;/strong&gt; NIS2 and DORA do not prescribe a data format, and the EU has not published official OSCAL catalogs for them. Germany has moved first: the BSI now publishes its security requirements, including Grundschutz++, the successor to IT-Grundschutz, as &lt;a href="https://github.com/BSI-Bund/Stand-der-Technik-Bibliothek" rel="noopener noreferrer"&gt;OSCAL documents on GitHub&lt;/a&gt;. The catalog was published in September 2025, with NIS2 implementation as a legal driver. If one of Europe's most influential baselines now ships as data, others will follow.&lt;/p&gt;

&lt;p&gt;If none of these apply to you, the signal still matters: regulators and large buyers are tired of reading PDFs, and machine-readable assurance is where procurement is heading.&lt;/p&gt;

&lt;h3&gt;
  
  
  No lock-in
&lt;/h3&gt;

&lt;p&gt;OSCAL is an open standard with open-source tooling from NIST and the community. Your compliance data stays portable between GRC platforms, consultants, and assessors. That alone is worth something the next time a tool contract renews.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why adoption stalls
&lt;/h2&gt;

&lt;p&gt;If OSCAL is this useful, why do so few organizations use it? In our experience, for three reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The gap between the standard and the system.&lt;/strong&gt; The schemas are well documented. Mapping your actual architecture, inherited controls, and shared responsibilities into them is not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The legacy pile.&lt;/strong&gt; Years of SSPs, spreadsheets, and policy documents do not convert themselves, and a naive conversion just produces machine-readable versions of the same drift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ownership.&lt;/strong&gt; OSCAL sits between security, compliance, engineering, and procurement. Without a clear owner and a narrow first scope, it becomes a side project that never ships.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are technical blockers. They are scoping, sequencing, and change-management problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to start
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pick one system and one baseline.&lt;/strong&gt; Not the whole estate. One system that matters, assessed against the framework you already answer to most often.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model the shared components first.&lt;/strong&gt; Identity, logging, encryption, and your cloud platform carry most controls. Describe them once as component definitions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build the SSP from references, not prose.&lt;/strong&gt; Let the system plan inherit from components instead of restating them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validate in the pipeline.&lt;/strong&gt; Run schema and content checks on every change, the same way you test code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect one evidence source.&lt;/strong&gt; Feed one automated control check into assessment results, prove the loop works, then expand.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How CODACON can help
&lt;/h2&gt;

&lt;p&gt;The standard is free. The hard part is the translation: turning your real systems, inherited controls, and existing paperwork into an OSCAL model your teams will actually maintain, then embedding it in how you build and assess.&lt;/p&gt;

&lt;p&gt;That is where we work. We help organizations scope a first OSCAL implementation, model their shared components, convert what is worth keeping from the legacy pile, and wire validation into their delivery pipeline so the model stays true after we leave.&lt;/p&gt;

&lt;p&gt;We have already done this end to end for one organization. The engagement is confidential, so we cannot name the client or share their artifacts, but we can walk you through the approach, the pitfalls we hit, and what it would take in your environment. If you are weighing OSCAL, or have started and stalled, &lt;a href="https://codacon.ai/services/" rel="noopener noreferrer"&gt;let's talk&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cloudsecurity</category>
      <category>sdlc</category>
    </item>
  </channel>
</rss>
