SecurityIdentity

From AI development to AI governance with AIDLC

Part 3 of our AI agent governance series. Much of an agent's risk gets decided before go-live, so this part maps security and identity controls to each stage of the agent lifecycle. You get a registration template, pipeline gates written as code, and why identity anchors trust and what assurance adds.

Aditya, Cohash Security Practice October 2026 33 min read 12 chapters 3-question check
part 7 of 10 · Identity security, from the ground up
01 Registered sponsor and… 02 Built andsigned provenance, A… 03 Tested policies and… 04 Admitted attested… 05 Retired one revoke…

the ideaNo stage starts until the one before it has left a record you can check.

after reading, you can
  • Explain which control belongs at each AIDLC stage
  • Set up pipeline gates that refuse an agent until its registration matches what was built
  • Spot when someone hands you a claim, like a model card, instead of evidence that an agent is safe

Too often, AI agent controls get added after go-live, once the agent already has a key and a job. Build governance into how agents get made instead. That means a registration record before the first credential, checks in the pipeline, an identity tied to where the agent runs and evidence your auditor can read. This is part 3 of our agent governance series, and it starts before the agent exists.

in plain wordsPractice: governance built into delivery

Much of an AI agent's risk is decided before it ever runs, so governance has to start while it's being built

An AI agent has a life like any other software. Someone proposes it, someone builds it, it gets tested and goes live, it runs for a while, and one day it should be switched off. We call that the AI agent development lifecycle, or AIDLC. Parts 1 and 2 of this series dealt with agents that already exist. This part moves the checks earlier. Before an agent gets a credential, someone writes down what it's for, what it may touch and who answers for it. The build pipeline checks those rules on every change, the agent gets an identity tied to where it really runs, and each step leaves a record behind. When your auditor or your board asks how you know an agent is safe, you hand them that record instead of a slide.

think of it like this

Think of building a house. You could inspect it after the family moves in, but by then the wiring is behind the walls. Inspectors check the plans, then the frame, then the wiring before the walls close. Each visit leaves a signed record, and nobody moves in until the last one passes.

who should care
  • CIOs and CISOs funding agent work
  • AI and platform engineering teams
  • Identity and IAM teams
  • Risk, audit and compliance
  • Business teams proposing agents

If you're new to the series, start with part 1, on owning and governing your AI agents and part 2, on kill switches and runtime control. For one agent's own login and per-task tokens, see our post on agents as privileged users. This part is for teams who'd rather new agents arrive governed than clean up after them.

chapter 01

Fixing agents after go-live is slow. Why not govern them while they're built?

Many companies govern agents in the order they find them. An agent turns up in a discovery scan, someone hunts for its owner, and then its access gets trimmed. Parts 1 and 2 cover that work, and you'll always need some of it. It's slow, though, because every fix lands on something that's already running and that somebody relies on.

NIST's AI Risk Management Framework wants risk managed continuously, all the way through an AI system's life, and it treats governance as something that runs through every other function. NIST's Secure Software Development Framework says much the same about software. Few lifecycle models deal with security in detail, so you bolt the practices onto whatever model you use. For agents, that's the AIDLC. Fix a gap once in the pipeline and every agent built after it gets the fix for free.

4functions in NIST's AI RMF: Govern, Map, Measure and Manage
12risks NIST's Generative AI Profile lists as unique to or made worse by generative AI
4practice groups in NIST's SSDF, from preparing the organization to fixing vulnerabilities
Dec 18, 2023publication date of ISO/IEC 42001, the AI management system standard
how it worksHow an agent moves through the AIDLCThink of each stage as a handover. If the record isn't there, the agent doesn't move on.
  1. 01 Intake and design

    It starts with a form. Someone writes down what the agent is for, who sponsors it, what it touches and how it signs in. Until a reviewer approves that, nobody issues a key.

  2. 02 Build

    Code, prompts, the tool list and policies sit in a repo. The pipeline signs in with short-lived tokens, never stored keys, and records what went into the build.

  3. 03 Test and evaluate

    Policy tests, evaluations and red-team runs check the agent against its registration. A failure blocks the release, the same as a failing unit test.

  4. 04 Deploy

    At deploy, admission refuses anything that isn't signed, tested and registered. Only then does the agent get an identity, tied to the machine and process it runs as.

  5. 05 Operate

    Now parts 1 and 2 take over, with drift checks, the gateway, trust signals and the kill switch. If someone wants to change the agent, the change goes back through the pipeline.

  6. 06 Retire

    When the retirement trigger fires, one workflow pulls the identity, the credentials and every grant. The release record stays archived, because auditors ask about retired agents too.

For engineers, the useful shift is treating the agent's registration as an input to the build. Once the purpose, tool list and scopes sit in a file next to the code, the pipeline can diff them, test them and refuse a release that doesn't match. None of the technology is new. Signing, provenance, policy engines and workload identity already run for ordinary services in many shops. The AIDLC just points them at agents.

What's out there to help

newNIST SP 800-218A for generative AI

It's NIST's add-on to the SSDF for generative AI. The tasks that bite first are protecting model weights from unauthorized access or changes, and checking training data for poisoning or tampering before anyone trains on it.

changedSSDF 1.2, still a draft

NIST's initial public draft of SSDF version 1.2 is out and its comment period has closed. Until it's final, map your controls to version 1.1 and keep an eye on what moves.

newSLSA 1.2 Source track

SLSA 1.2 adds a Source track beside the Build track. It covers how source changes get made, which matters once prompts and tool lists live in the repo. Build levels still run from L1, provenance exists, to L3, a hardened build platform.

enhancedCycloneDX ML-BOM

CycloneDX has done machine learning BOMs since version 1.5. Put the model card in it, with intended use, limitations, training datasets and metrics, and your reviewer reads the same facts the builder wrote down.

newModel signing with Sigstore

Sign the model like you'd sign a container. The model-transparency project does it with Sigstore or ordinary keys, and verification recomputes the file hashes, so a swapped or edited model fails.

newOWASP ASI04, agentic supply chain

OWASP's agentic top 10 gives supply chain its own entry, pointing at how easily MCP and A2A components can be poisoned at runtime. Tool servers belong in your build checks for that reason.

chapter 02

You already have an SDLC. What does the AIDLC add for agents?

We use AIDLC to mean the AI agent development lifecycle, the stages an agent goes through from the first idea to the day it's switched off. Our six stages are intake and design, build, test and evaluate, deploy, operate and retire. NIST and ISO don't define the term. It's a working map, and each framework in this post lines up against it.

Still, this isn't a normal app. NIST's SSDF profile for generative AI points out that code and data blur together, and that model weights can be tampered with. A crafted query can even become an injection attack. Then there's what's new here: the software chooses its own tools, which turns permissions into a design question. Early on is when they're easiest to get wrong.

tableThe stages are the ones you know. What happens inside them is where agents get tricky
StageNormal applicationAI agentWhat changes for governance
Intake and designRequirements and an architecture reviewPurpose, autonomy, tools and the data it may readTools and scopes are design decisions. Review them before a credential exists
BuildCode and dependenciesCode, prompts, model choice, tool servers and policiesPrompts, model versions and MCP servers are build inputs. Pin and record them
Test and evaluateUnit, integration and security testsThose, plus evaluations, red-teaming and policy testsBehavior isn't fixed by the code alone, so test the behavior and the permissions
DeployRelease approval, then the build goes outRelease plus an identity, credentials and tool grantsThe identity is issued at deploy, so the deploy gate checks it
OperateMonitoring and patchingDrift, trust signals and the kill switch (parts 1 and 2)Every change to tools or scopes goes back through the pipeline
RetireDecommission the serverRevoke identity, tokens, keys and SaaS grantsNIST AI RMF GOVERN 1.7 asks for safe decommissioning. Plan it at design time
chapter 03

Which control goes where?

This is the map we'd start from. Each stage answers one governance question with a control. The control leaves something behind you can show later, and the last column names the framework that asks for it. That way the same work counts toward an audit.

tableOne row per stage. Read across for the question, the control we'd use and what it leaves behind
StageQuestion to answerControlEvidence left behindFramework anchor
1. Intake and designShould this agent exist, and who answers for it?Registration record, design review and a threat modelApproved registration file and the review decisionNIST AI RMF MAP 1.1 and GOVERN 1.6; SSDF PW.1.1; ISO/IEC 42001
2. BuildDo we know exactly what went into it?OIDC sign-in for CI, secrets scanning, pinned model and tool versions, an AI BOMBuild provenance, ML-BOM or SPDX AI package, scan resultsSSDF PS.3.2; SP 800-218A PS.1.3 and PW.3; SLSA Build track; OWASP LLM03, NHI2, NHI6
3. Test and evaluateDoes it behave, and does it stay inside its scopes?Policy unit tests, evaluations, red-team runs for prompt injection and tool misuseTest and red-team results tied to that buildNIST AI RMF MEASURE 2.7; AI 600-1 MS-2.7-007; OWASP ASI01, ASI02
4. DeployIs this the artifact we tested, running where we expect?Signature and attestation checks at admission, workload attestation, identity from a reviewed templateAdmission decision log, SVID or agent identity recordSLSA verification; Sigstore policy-controller; SPIFFE and SPIRE; OWASP NHI8
5. OperateIs it still what we approved?Drift diff, gateway policy, trust signals, kill switch (parts 1 and 2)Drift findings, policy decisions, drill resultsNIST AI RMF MANAGE 4.1 and MANAGE 2.4
6. RetireIs everything it held gone?Retirement trigger, one revocation workflow, archived recordsRevocation record, archived release and provenanceNIST AI RMF GOVERN 1.7; SSDF PS.3.1; OWASP NHI1

Two rows do most of the work. Intake decides what the agent is allowed to be, and deploy refuses anything that doesn't match. The stages in between produce the proof that it matches. If you only have budget for two gates this year, put them there.

chapter 04

What goes on an agent's registration?

The registration record is the cheapest control in this post. Someone fills it in before the agent gets a credential, and later the pipeline checks every build against it. NIST's AI RMF wants intended purposes documented and an inventory of AI systems. With the template, nobody can skip either one.

Microsoft Entra has a version of this built in. Its docs call an agent identity blueprint a template for creating agent identities, and it holds how they're created and authenticated. Keep your own template anyway. The blueprint covers how agents sign in and what they're allowed to do, and your review still needs the purpose, the data and a way out.

tableAgent registration and design review template. Fill in one per agent and keep it in the agent's repo
FieldWhat to writeWhy the reviewer caresChecked by
Agent name and IDA unique name, plus the registry ID once it's issuedEvery log, token and review joins on itPipeline, against the registry
PurposeOne or two sentences on the job, and what it must never doNIST AI RMF MAP 1.1 asks for intended purpose. Scope creep starts where this is vagueDesign reviewer
SponsorThe business person who answers for itPart 1's rule: no sponsor, no credentialDesign reviewer, IGA
Technical ownerThe team that runs it and holds its configurationSomeone has to rotate, patch and fix itDesign reviewer
Autonomy levelSuggests only, acts with approval, or acts aloneSets how much testing and human sign-off it needsDesign reviewer, risk team
Tools and MCP serversEach tool and server it may call, with versionsTool lists can change at runtime (part 1), so this list is the baselinePipeline diff against the build
Data it reads and writesSystems, data classes, and whether it touches personal or regulated dataDrives the evaluation plan and where it's allowed to runData owner, privacy
Identity typeWorkload identity, an agent identity from a blueprint, or a managed identity. Never a shared accountOWASP NHI9 and NHI10 flag reused identities and humans using NHIsIdentity team
Credential typeShort-lived tokens from attestation or OIDC. Static keys only with a written exception and an end dateOWASP NHI7 covers long-lived secretsPipeline secrets scan and policy test
Scopes and limitsScopes per tool, plus task limits like amounts or record countsPart 2: a scope alone doesn't say how muchPolicy tests
A2A partnersWhich agents it may call, which may call it, and on whose behalfEvery partner is another trust decisionIdentity and platform teams
High-impact actionsPayments, deletions, permission changes and outside messages, each with its approval ruleThese get policy-as-code rules firstPolicy tests, sponsor
Kill switchGateway client ID to block, identity to disable, secrets to rotatePart 2's drill needs this written down before the incidentSecurity operations
TelemetryWhere traces, tool calls and policy decisions go, and the join keys it carriesAssurance has nothing to read without itPlatform team, SOC
Evaluation planWhich evaluations and red-team cases it must pass, and the pass barMEASURE 2.7 asks for security and resilience to be evaluated and documentedTest gate
Review cadenceWhen the sponsor reviews it, and which changes force a new reviewWithout a date in the file, reviews tend not to happenIGA, sponsor
Retirement triggerThe date, event or idle period that retires it, and who confirmsGOVERN 1.7 asks for safe decommissioningRetirement workflow
agent-registration.yaml (example output)example output
# filled in before the agent gets any credential
agent:        invoice-matcher
purpose:      match supplier invoices to POs
never:        post payments or edit vendor bank details
sponsor:      finance-ops-lead
owner:        team-ap-automation
autonomy:     acts-with-approval
identity:     spiffe://corp.example/agents/invoice-matcher
credentials:  short-lived only
tools:        [[email protected], [email protected]]
a2a_partners: none
kill_switch:  gateway client inv-match-01
review:       sponsor, every 90 days
retire_when:  idle 30 days, or project closes

Keep the file in the same repo as the agent's code. A change to the tool list or the scopes then becomes a pull request the sponsor can see, and the pipeline can refuse a build whose real tool list doesn't match the file. The same facts can travel with the artifact in a standard format, too. SPDX's AI profile has a field for an AI package's autonomy type, and CycloneDX has a model card object.

chapter 05

Governance as code. What should the pipeline refuse to let through?

A governance rule in a document gets enforced when somebody remembers it. Written as code, it gets checked on every build. Part 2 put rules at the gateway, while the agent runs. This section puts the same idea earlier, with rules the pipeline checks before anything is deployed.

Open Policy Agent works well here because it keeps the decision apart from the enforcement. Your pipeline hands OPA some JSON, and OPA checks it against policies written in Rego. Conftest runs Rego against structured config, and its docs list Kubernetes configs, Tekton pipelines and Terraform code, so a registration file fits fine. Rules get unit tests with opa test. When someone breaks a rule, the build fails, the same as it would for broken code.

Cedar is the other common pick, and Amazon Verified Permissions uses it. Its evaluation order is handy for hard limits. Any matching forbid policy means deny. Otherwise a matching permit allows the request, and if nothing matches, it's still a deny. So write the lines an agent must never cross as forbid rules. Nobody's permit added later can override them.

policy/agent_release.rego (example output)example output
# runs in CI against the registration and build manifest
package agent.release
deny contains msg if {
  not input.registration.sponsor
  msg := "no sponsor, no release"
}
deny contains msg if {
  some t in input.build.tools
  not t in input.registration.tools
  msg := sprintf("tool %v not registered", [t])
}
deny contains msg if {
  input.build.static_keys
  not input.exception.approved
  msg := "static keys need an approved exception"
}
side by sideOne release rule, two ways to check it. On the left a meeting, on the right the pipeline
Design review in a meeting
  • The team shows slides once, the board nods, and the purpose and tools count as approved
  • Three months later a developer adds a tool, and nobody books another meeting
  • The approval lives in meeting minutes that nobody can match to a build
  • Auditors get the minutes and a promise that people followed them
Gates in the pipeline
  • Whatever got approved lives in a file in the repo, right beside the code
  • The new tool is a pull request, and the build fails until the registration and the sponsor catch up
  • Every release ships with signed provenance pointing back to the registration it passed
  • Auditors get the rule, its tests and a pass or fail for every build, which beats a promise

Pipeline gates for an agent release, in order

  1. 01
    Registration present and approved

    The build reads the registration file and stops if the sponsor, purpose or retirement trigger is missing. A missing sponsor is the cheapest problem you'll ever catch, so catch it first.

  2. 02
    Pipeline signs in without stored secrets

    Use your CI platform's OIDC federation to get short-lived cloud tokens. GitHub's docs point out you then don't keep cloud credentials as long-lived GitHub secrets. That matters, because OWASP's NHI6 says static CI credentials leak through repos, logs and config files.

  3. 03
    Scan for secrets and pin the inputs

    Fail the build on hard-coded keys. Pin the model version, prompt templates and every MCP server or tool package by version or digest, so you know exactly what you tested.

  4. 04
    Record what went in

    Generate build provenance and an AI BOM, in CycloneDX ML-BOM or as an SPDX AI package. SSDF task PS.3.2 asks for provenance on every component of each release, and you'll want it the day a model needs pulling.

  5. 05
    Test the policies and the behavior

    Test the rules first with opa test or Cedar's tests, then the behavior with the evaluation and red-team suites the registration lists. A result only counts for the build it ran on.

  6. 06
    Sign the release

    Sign everything the agent ships with: the image, the model files and the attestations. With Sigstore the keys are short-lived and each signature gets logged publicly, so you can audit it later.

  7. 07
    Verify before admission

    At deploy, an admission controller checks signatures and attestations and turns away anything that fails. Sigstore's policy-controller does this on Kubernetes, with extra policies in CUE or Rego.

Keep the gates predictable. A Hacker News writer looking at AI-generated infrastructure code put it well: AI output is probabilistic, and compliance needs the same input to get the same policy decision every time. So let the agent be clever, and make the pipeline boring.

chapter 06

Why is identity the anchor of trust for an agent?

Every check in this post comes back to one question: which agent is this, really? A signature tells you who built an artifact, and a policy decision is only as good as the identity it was made for. The audit trail depends on it too. If an agent can borrow a teammate's key or a shared service account, every one of those checks attaches to the wrong thing.

So each agent gets its own identity, issued as part of deploy and never pasted in. SPIFFE gives a workload an ID and short-lived identity documents called SVIDs, X.509 certificates and JWTs among them. Its SPIRE implementation decides who gets one through attestation. Node attestation proves the machine, using evidence like a cloud instance identity document, a key held in a TPM or a Kubernetes service account token. Workload attestation then asks the node's kernel or kubelet which process is calling and compares the answer with what was registered. The agent proves where it runs, and nobody has to hand it a secret.

That's the answer to a problem people keep running into, usually called secret zero. On HashiCorp's forum, someone running Vault Agent on a long-lived VM in an air-gapped banking setup asked how to keep re-authenticating with AppRole without leaving a secret_id on disk, which they said turns it into a static password. The first reply pointed at platform-based auth. A later one suggested TPM or vTPM infrastructure and bootstrap certificates registered before anything gets access to the machine. If your agents will run somewhere with no cloud or Kubernetes to vouch for them, decide that at design time.

Keep identities apart by environment as well. OWASP's NHI8 warns that reusing the same NHI across test and production causes real problems, and NHI6 covers CI credentials that leak through repos, logs and config files. Installers leak them too. NVD's entry for CVE-2026-78627 describes an Okta integration installer that recorded its OAuth client secret in plaintext in the installer log, the Windows Application Event Log and the process command line. Any secret you pass in at install time can end up somewhere like that, which is one more reason to issue identity through attestation.

Identity and permission are different jobs, and it helps to keep them apart. A Hacker News commenter put it neatly: SPIFFE gives you workload identity and attestation, and it isn't a delegation framework. Let it answer who the agent is, and let something else answer what it may do. Here, that something else is part 2's tokens and policy. Another commenter raised the harder case. SPIFFE assumes you control where workloads run, while agents built by third parties cross organizational boundaries. For those, the registration has to say whose identity system vouches for the agent.

tableEach link vouches for the next one. Break one and the checks after it mean little
LinkWhat it provesHow it's checkedIf it's missing
Signed artifact and provenanceWho built it, from which source and inputsSignature and provenance verified at admissionYou can't tell the running agent from one someone swapped in
Attested workloadWhere it runs: which node and which processSPIRE node and workload attestation, or the cloud's own workload identityAnyone holding a copied key can claim to be the agent
Agent identityWhich agent this is, created from a reviewed templateIdentity provider record linked to the registration IDLogs and reviews attach to a shared or borrowed account
Short-lived tokenWhat it may do right now, and for whomAudience, scope and actor checks at each service (part 2)A stolen token keeps working until it expires
Sponsor and registrationWho answers for it and what it was approved to doPipeline check against the registration fileNobody can say whether its behavior was intended
chapter 07

What does assurance add? And why won't one review before go-live do?

Assurance is the evidence that your controls actually work, and it's a separate thing from the controls. A design review is a control. The signed record of that review, linked to the build that went out, is assurance. Without that record, an auditor has to take your word for the review.

Be careful what you count as evidence. OWASP's supply chain entry for LLM applications says model cards and their documentation tell you about a model but don't guarantee where it came from. Its advice is to use models from verifiable sources and to check integrity with signatures and file hashes. A model card is a claim. A signature checked at deploy time is evidence.

NIST's AI RMF builds testing in from the start. It calls the work TEVV, short for test, evaluation, verification and validation, and says that run regularly across the lifecycle it allows for fixes mid-course and risk management after the fact. MEASURE 2.7 asks for a system's security and resilience to be evaluated and documented. MEASURE 1.3 wants internal experts who weren't front-line developers on the system, or independent assessors, involved in regular assessments. The Generative AI Profile adds red-teaming against prompt injection, data poisoning and model extraction, among other attacks.

side by sideSame design review in both columns. On the left it's checked once, on the right it keeps getting checked
Point-in-time
  • One review before go-live, then nothing until the annual audit
  • Evidence gets pulled together by hand when the auditor asks, weeks later
  • A model or tool change after the review never gets looked at
  • The report only tells you the agent looked fine on the day someone checked it
Continuous
  • The design review is just the first entry. Every build adds to the record after that
  • Every release brings its test results, provenance and signatures along. Nobody chases them the week before the audit
  • Swap the model, add a tool or widen a scope, and the gates run again before anything goes out
  • An independent reviewer samples the record regularly, and tries to push a bad build through to see if the gates hold

ISO/IEC 42001 sits around all of this. It sets requirements for setting up, running, maintaining and continually improving an AI management system, for any organization that provides or uses AI. We use the AIDLC to give that management system something concrete to point at, a stage and a gate and a record for every agent.

  • The approved registration file and the design review decision. Put the reviewer's name on it, because auditors ask
  • Build provenance and the AI BOM, signed. SSDF task PS.3.1 suggests keeping them apart from the release files
  • Test results tied to the build, policies and red-team runs included. If the build hash doesn't match, the results don't apply
  • Admission's decision log for that release, and the identity it got. An auditor asking who let it in gets a one-line answer
  • Drift findings and kill-switch drill results, once it's running. Parts 1 and 2 cover how to get them
  • At retirement, the revocation record. Add a pointer to the archived release so nobody has to dig for it
chapter 08

What does it look like before and after?

before

Before: governance shows up after the agent does

A developer builds the agent on a laptop with a pasted API key and deploys it by hand. The review was a slide deck. Nothing ties the running agent to what was approved, so every audit starts with an inventory hunt.

Before: governance shows up after the agent does A developer builds the agent on a laptop with a pasted API key and deploys it by hand. The review was a slide deck. Nothing ties the running agent to what was approved, so every audit starts with an inventory hunt. 01 · DESIGN 02 · BUILD 03 · RUN approved once push manual deploy whatever version Slide-deck review approval in minutes Developer laptop pasted API key CI job long-lived cloud secret Agent in production shared service account Tools and MCP servers unpinned versions © Cohash · cohash.com
01 · DESIGN02 · BUILD03 · RUN Slide-deck review: approval in minutes Slide-deck review approval in minutes Developer laptop: pasted API key Developerlaptop pasted API key CI job: long-lived cloud secret CI job long-lived cloudsecret Agent in production: shared service account Agent inproduction shared serviceaccount Tools and MCP servers: unpinned versions Tools and MCPservers unpinned versions approved once manual deploy © Cohash · cohash.com
after

After: the pipeline won't move an agent on without a record

The registration file lives in the repo now. CI signs in with OIDC, runs the policy and behavior tests and signs the release along with its provenance and AI BOM. Admission won't let it run until all of that checks out. Then the agent gets an attested identity, and every record ends up in the evidence store for the auditor.

After: the pipeline won't move an agent on without a record The registration file lives in the repo now. CI signs in with OIDC, runs the policy and behavior tests and signs the release along with its provenance and AI BOM. Admission won't let it run until all of that checks out. Then the agent gets an attested identity, and every record ends up in the evidence store for the auditor. 01 · DESIGN 02 · BUILD AND TEST 03 · DEPLOY AND RUN 04 · EVIDENCE checked each build tests signs verified admitted runs as results provenance decision Registration file sponsor, tools, scopes CI pipeline OIDC, no stored keys Policy engine Rego or Cedar tests Signing provenance, AI BOM Admission check verifies signatures Attested identity short-lived SVID Agent in production gateway, drift checks Evidence store per release, for audit © Cohash · cohash.com
01 · DESIGN02 · BUILD AND TEST03 · DEPLOY AND RUN04 · EVIDENCE Registration file: sponsor, tools, scopes Registration file sponsor, tools, scopes CI pipeline: OIDC, no stored keys CI pipeline OIDC, no storedkeys Policy engine: Rego or Cedar tests Policyengine Rego or Cedartests Signing: provenance, AI BOM Signing provenance, AIBOM Admission check: verifies signatures Admissioncheck verifiessignatures Attested identity: short-lived SVID Attestedidentity short-livedSVID Agent in production: gateway, drift checks Agent inproduction gateway, driftchecks Evidence store: per release, for audit Evidence store per release, for audit checked each build verified results provenance decision © Cohash · cohash.com
chapter 09

What should each team do now?

What to do now, by who you are

Business leadersthis month
  • Make it a rule: no new agent gets a credential until its registration is approved and names a sponsor.
  • Ask for the evidence pack of one agent that's already live. If it takes a week to put together, you've found the gap.
  • Decide who reviews agent designs, and don't pick the builders. NIST's MEASURE 1.3 points to internal experts who weren't front-line developers, or independent assessors.
AI and platform engineeringthis quarter
  • Move the registration into a file in each agent's repo, and fail builds that don't match it.
  • Swap stored CI secrets for OIDC federation, and pin model, prompt and tool server versions.
  • Sign releases and model files. Generate provenance and an AI BOM on every build, so nobody has to rebuild the record later.
Identity teamthis quarter
  • Issue each agent its own identity at deploy, from attestation or a reviewed template. No shared or pasted credentials.
  • Keep separate identities for test and production. OWASP's NHI8 entry explains what goes wrong otherwise.
  • Link every identity to its registration ID, so retirement can find everything that hangs off it.
Risk, audit and securityongoing
  • Write evaluation and red-team cases per autonomy level, and agree the pass bar before testing starts.
  • Sample evidence packs on a schedule. Then try to sneak a non-compliant build through the gates yourself, and see what stops it.
  • Map each gate to NIST AI RMF, the SSDF and ISO/IEC 42001, so one record serves all three.
chapter 10

How do you roll the AIDLC out without stalling the teams already shipping agents?

Start with new agents and the two gates that matter most, then work back into the agents you already run. Each step below is useful on its own, so you can stop after any of them and still be better off than you were.

Rolling out the AIDLC, in order

  1. 01
    Use the template for every new agent

    Use the registration template for every new proposal from this month on. Fill it in by hand at first. The habit matters more than the tooling.

  2. 02
    Put the record in the repo

    Turn the template into a file next to the agent's code. Changes to tools, scopes or partners become pull requests the sponsor approves.

  3. 03
    Take secrets out of the pipeline

    Switch CI to OIDC federation and add a secrets scan that fails the build. Remove the stored cloud keys once nothing uses them.

  4. 04
    Write the first five policies

    Start with these: a sponsor is named, the tools match the registration, there are no static keys without an exception, each high-impact action has a rule and a retirement trigger is set. Give every rule tests.

  5. 05
    Sign and record every release

    Add provenance, an AI BOM and signatures for images and model files. Store them apart from the release itself.

  6. 06
    Gate the deploy

    Turn admission checks on in audit mode first, fix what they flag, then switch them to enforce.

  7. 07
    Issue identity from attestation

    Move agents to workload identity from SPIRE or your cloud, or to agent identities from a reviewed blueprint. Retire shared accounts as you go.

  8. 08
    Bring existing agents in

    Go through part 1's inventory and write a registration for each agent, riskiest first. Their next change then has to go through the pipeline like everything else.

chapter 11

Agents will ship around your gates sometimes. What do you do when one does?

Someone skipped the gates, or a gate let one through. Here's the order we'd work in

Maybe discovery turned up an agent nobody registered, or an audit found a release with no provenance. Treat it as a process failure first and an agent problem second. Fix the agent, then close the gap it came through.

  1. 01Containfirst hour
    • If it can move money, delete data or change permissions, block it at the gateway first. Then work through part 2's kill-switch steps.
    • Freeze its pipeline, so nobody pushes a quick fix that skips the gates again.
  2. 02Assessfirst day
    • Write its registration from what it really does today. Look at the tools it calls, the data it reads and what it signs in with.
    • Compare the running artifact with what the registry and the build records say. Unsigned images and unpinned tool servers go to the top of the list.
  3. 03Bring it indays 1 to 5
    • Rebuild it through the pipeline with an attested identity, then retire the old credentials.
    • Before anyone uses it again, run the evaluation and red-team suites for its autonomy level.
  4. 04Close the gapfirst two weeks
    • Work out how it got around the gates. A manual deploy, an exception that never expired and a platform outside the admission check are the usual routes.
    • Shut that route, or add it to part 1's discovery sources, so the next agent like this shows up in days.
  5. 05Report and learnfirst month
    • Write down what was missing and what you changed. Auditors will ask for both, and the evidence pack now shows them.
    • Walk the sponsors through it, so the next exception request gets a harder look.
chapter 12

What could this look like in practice?

Three typical situations

01 Hackathonbuild 02 Developer key 03 All tickets attachments too 04 Design review scopes the data
scenario 01High risk
A support agent that went live without a design review
the setup
A software company's support team built an agent at a weekend hackathon. It went live by hand on a developer's API key, with read access to the whole ticket history, attachments included.
what happens
Months later a red-team exercise shows a crafted ticket can get it to reply with another customer's attachment. Nobody wrote down what data it was meant to read, so nobody can say what's out of bounds.
what to do
Start with the registration you never wrote, and limit it to the ticket in front of it. The crafted ticket becomes a permanent test case. Rebuild it through the pipeline with its own identity and kill the old key.
01 Tested model 02 Unpinned pull 03 Differentmodel 04 Admissioncheck hash must match
scenario 02Medium risk
A model that changed between test and production
the setup
A lender's platform team tested a claims-summary agent against one model version. A later deploy pulled a newer model from a public hub, because nothing pinned it.
what happens
The agent's summaries change and nobody notices for weeks. Then an audit asks which model produced last month's summaries, and no build record can say.
what to do
Pin the model by digest, sign it and record it in the AI BOM. Make admission refuse any deploy whose model hash doesn't match the one that was tested.
01 Sharedaccount 02 Key in testlog 03 Works in prod 04 Separateidentities per environment
scenario 03High risk
A test credential that worked in production
the setup
A retailer's pricing agent used one service account in test and production to keep deployment simple. The test environment had looser network rules and more people with access.
what happens
Then a test script written by a contractor prints the key into a shared log. The key opens production as well, and afterwards nobody can say which price changes the agent made and which the script did.
what to do
Give each environment its own identity, issued through attestation, so a test credential can't work in production. Retire the shared account and rotate whatever it could reach.

We'd start with the template. We'd sit down with one team, fill in a registration for an agent they're about to build and turn it into the first pipeline gate together. Then we'd add signing, attested identity and the evidence pack a step at a time. Our AI governance, AI security and DevSecOps pages explain how we work, and machine and workload identity covers the identity side.

Start with the tools you've got. We'd do the identity work on Microsoft Entra ID, Okta, HashiCorp Vault or CyberArk, and agents on Amazon Bedrock, Microsoft Foundry or Google Vertex AI go through the same gates. Bring in engineers for the build, or begin with an assessment of how your agents get made now.

key takeaways

What to take from this

  1. 01

    Govern agents where they're built. A fix in the pipeline reaches every agent built after it.

  2. 02

    No credential before an approved registration that names a sponsor, a purpose, the tools and a retirement trigger.

  3. 03

    Keep the registration in the repo, so every change to tools or scopes becomes a pull request the pipeline checks.

  4. 04

    Write release rules as policy as code with tests of their own. The agent can be probabilistic, the gates can't.

  5. 05

    Sign the release and the model files. Keep provenance and an AI BOM for every build, because auditors will ask which model ran.

  6. 06

    Give each agent its own identity from attestation at deploy, separate per environment and never pasted in.

  7. 07

    Treat model cards and design decks as claims. Signatures, test results and admission logs are what count as evidence.

  8. 08

    Plan retirement at design time, so switching an agent off takes one workflow instead of a hunt.

fact-checked October 2026 against vendor and official documentation · where to go next
  1. How Cohash delivers Microsoft Entra ID: scope, roles and architecture
  2. How Cohash delivers Okta: scope, roles and architecture
  3. How Cohash delivers HashiCorp Vault: scope, roles and architecture
  4. Hire vetted Microsoft Entra ID engineers
  5. AI governance
  6. Book a 30-minute working session with a senior engineer
01What is the AIDLC?

It's our name for the AI agent development lifecycle, from intake and design to retirement. NIST and ISO don't define the term. Treat it as a working map. Each stage gets a governance question and a control, and the control leaves a record you can show an auditor.

02Do we need a new process for agents, or can our existing SDLC stretch to cover them?

Keep your SDLC and add to it. NIST's SSDF is meant to be added into whatever lifecycle you already use, and SP 800-218A adds AI tasks like protecting model weights and checking training data. Agents need a few extras of their own: a tool list, scopes, an identity and a retirement plan.

03What should an AI agent registration include?

Everything in the template above, ideally. If you only fill in four fields to begin with, make them the purpose, the sponsor, the tools it may call and the retirement trigger. Those are the fields that stop an agent drifting into work nobody approved.

04What does governance as code mean for AI agents?

You write the rules as policy files, in Rego for Open Policy Agent or in Cedar, and you test them like code. The pipeline checks every build against them and the gateway checks every call. Changing a rule means a reviewed pull request, and each decision leaves a log line someone can read later.

05Why is identity called the anchor of trust?

Every other check hangs off an identity. Signatures say who built something, policies decide for a given caller, and logs record who acted. If agents share accounts or borrow keys, all of that points at the wrong thing. Give each agent its own attested, short-lived identity and the rest holds together.

06Our agent pipelines leak secrets. How do we stop it?

Take them out of the pipeline altogether. Use your CI platform's OIDC federation for short-lived cloud tokens and fail any build with a hard-coded key. Then issue the agent's runtime identity through attestation, so there's no secret to paste. OWASP's NHI top 10 treats secret leakage, insecure CI configurations and long-lived secrets as separate risks.

07Is a model card enough evidence for an auditor?

On its own, no. OWASP's LLM supply chain entry says model cards give you information but no guarantee of where a model came from. Pair the card with signed model files, hashes checked at deploy and evaluation results for that exact build.

08Is one review before go-live enough, or do we need continuous assurance?

Point-in-time is one review before go-live and an audit later. Continuous means each build adds its own evidence, changes rerun the gates, and independent reviewers sample the record on a schedule. NIST's AI RMF asks for risk management that runs throughout the lifecycle.

09Does ISO/IEC 42001 tell us how to build agents?

Not directly. ISO/IEC 42001 sets requirements for an AI management system, which is about how your organization runs AI and keeps improving that over time. Lifecycle gates and evidence packs sit underneath it. They're what you point at when an auditor asks how the management system works in practice.

next step

Tell us what you're running. We'll tell you what we'd do first.

A 30-minute working session with a senior engineer. No slides.

useful to bring
  • The platform and the version you're on
  • Where you need to get to, and by when
  • What's custom: rules, plugins, integrations
  • Any audit finding or deadline driving it