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.
part 7 of 10 · Identity security, from the ground upthe 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.
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 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.
- 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.
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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
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.
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.
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.
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.
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.
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.
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.
| Stage | Normal application | AI agent | What changes for governance |
|---|---|---|---|
| Intake and design | Requirements and an architecture review | Purpose, autonomy, tools and the data it may read | Tools and scopes are design decisions. Review them before a credential exists |
| Build | Code and dependencies | Code, prompts, model choice, tool servers and policies | Prompts, model versions and MCP servers are build inputs. Pin and record them |
| Test and evaluate | Unit, integration and security tests | Those, plus evaluations, red-teaming and policy tests | Behavior isn't fixed by the code alone, so test the behavior and the permissions |
| Deploy | Release approval, then the build goes out | Release plus an identity, credentials and tool grants | The identity is issued at deploy, so the deploy gate checks it |
| Operate | Monitoring and patching | Drift, trust signals and the kill switch (parts 1 and 2) | Every change to tools or scopes goes back through the pipeline |
| Retire | Decommission the server | Revoke identity, tokens, keys and SaaS grants | NIST AI RMF GOVERN 1.7 asks for safe decommissioning. Plan it at design time |
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.
| Stage | Question to answer | Control | Evidence left behind | Framework anchor |
|---|---|---|---|---|
| 1. Intake and design | Should this agent exist, and who answers for it? | Registration record, design review and a threat model | Approved registration file and the review decision | NIST AI RMF MAP 1.1 and GOVERN 1.6; SSDF PW.1.1; ISO/IEC 42001 |
| 2. Build | Do we know exactly what went into it? | OIDC sign-in for CI, secrets scanning, pinned model and tool versions, an AI BOM | Build provenance, ML-BOM or SPDX AI package, scan results | SSDF PS.3.2; SP 800-218A PS.1.3 and PW.3; SLSA Build track; OWASP LLM03, NHI2, NHI6 |
| 3. Test and evaluate | Does it behave, and does it stay inside its scopes? | Policy unit tests, evaluations, red-team runs for prompt injection and tool misuse | Test and red-team results tied to that build | NIST AI RMF MEASURE 2.7; AI 600-1 MS-2.7-007; OWASP ASI01, ASI02 |
| 4. Deploy | Is this the artifact we tested, running where we expect? | Signature and attestation checks at admission, workload attestation, identity from a reviewed template | Admission decision log, SVID or agent identity record | SLSA verification; Sigstore policy-controller; SPIFFE and SPIRE; OWASP NHI8 |
| 5. Operate | Is it still what we approved? | Drift diff, gateway policy, trust signals, kill switch (parts 1 and 2) | Drift findings, policy decisions, drill results | NIST AI RMF MANAGE 4.1 and MANAGE 2.4 |
| 6. Retire | Is everything it held gone? | Retirement trigger, one revocation workflow, archived records | Revocation record, archived release and provenance | NIST 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.
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.
| Field | What to write | Why the reviewer cares | Checked by |
|---|---|---|---|
| Agent name and ID | A unique name, plus the registry ID once it's issued | Every log, token and review joins on it | Pipeline, against the registry |
| Purpose | One or two sentences on the job, and what it must never do | NIST AI RMF MAP 1.1 asks for intended purpose. Scope creep starts where this is vague | Design reviewer |
| Sponsor | The business person who answers for it | Part 1's rule: no sponsor, no credential | Design reviewer, IGA |
| Technical owner | The team that runs it and holds its configuration | Someone has to rotate, patch and fix it | Design reviewer |
| Autonomy level | Suggests only, acts with approval, or acts alone | Sets how much testing and human sign-off it needs | Design reviewer, risk team |
| Tools and MCP servers | Each tool and server it may call, with versions | Tool lists can change at runtime (part 1), so this list is the baseline | Pipeline diff against the build |
| Data it reads and writes | Systems, data classes, and whether it touches personal or regulated data | Drives the evaluation plan and where it's allowed to run | Data owner, privacy |
| Identity type | Workload identity, an agent identity from a blueprint, or a managed identity. Never a shared account | OWASP NHI9 and NHI10 flag reused identities and humans using NHIs | Identity team |
| Credential type | Short-lived tokens from attestation or OIDC. Static keys only with a written exception and an end date | OWASP NHI7 covers long-lived secrets | Pipeline secrets scan and policy test |
| Scopes and limits | Scopes per tool, plus task limits like amounts or record counts | Part 2: a scope alone doesn't say how much | Policy tests |
| A2A partners | Which agents it may call, which may call it, and on whose behalf | Every partner is another trust decision | Identity and platform teams |
| High-impact actions | Payments, deletions, permission changes and outside messages, each with its approval rule | These get policy-as-code rules first | Policy tests, sponsor |
| Kill switch | Gateway client ID to block, identity to disable, secrets to rotate | Part 2's drill needs this written down before the incident | Security operations |
| Telemetry | Where traces, tool calls and policy decisions go, and the join keys it carries | Assurance has nothing to read without it | Platform team, SOC |
| Evaluation plan | Which evaluations and red-team cases it must pass, and the pass bar | MEASURE 2.7 asks for security and resilience to be evaluated and documented | Test gate |
| Review cadence | When the sponsor reviews it, and which changes force a new review | Without a date in the file, reviews tend not to happen | IGA, sponsor |
| Retirement trigger | The date, event or idle period that retires it, and who confirms | GOVERN 1.7 asks for safe decommissioning | Retirement workflow |
# 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.
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.
# 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" }
- 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
- 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
- 01Registration 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.
- 02Pipeline 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.
- 03Scan 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.
- 04Record 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.
- 05Test 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.
- 06Sign 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.
- 07Verify 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.
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.
| Link | What it proves | How it's checked | If it's missing |
|---|---|---|---|
| Signed artifact and provenance | Who built it, from which source and inputs | Signature and provenance verified at admission | You can't tell the running agent from one someone swapped in |
| Attested workload | Where it runs: which node and which process | SPIRE node and workload attestation, or the cloud's own workload identity | Anyone holding a copied key can claim to be the agent |
| Agent identity | Which agent this is, created from a reviewed template | Identity provider record linked to the registration ID | Logs and reviews attach to a shared or borrowed account |
| Short-lived token | What it may do right now, and for whom | Audience, scope and actor checks at each service (part 2) | A stolen token keeps working until it expires |
| Sponsor and registration | Who answers for it and what it was approved to do | Pipeline check against the registration file | Nobody can say whether its behavior was intended |
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.
- 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
- 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
What does it look like before and after?
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.
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.
What should each team do now?
What to do now, by who you are
- 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.
- 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.
- 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.
- 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.
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
- 01Use 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.
- 02Put 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.
- 03Take 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.
- 04Write 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.
- 05Sign and record every release
Add provenance, an AI BOM and signatures for images and model files. Store them apart from the release itself.
- 06Gate the deploy
Turn admission checks on in audit mode first, fix what they flag, then switch them to enforce.
- 07Issue 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.
- 08Bring 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.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
What could this look like in practice?
Three typical situations
- 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.
- 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.
- 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.
What to take from this
- 01
Govern agents where they're built. A fix in the pipeline reaches every agent built after it.
- 02
No credential before an approved registration that names a sponsor, a purpose, the tools and a retirement trigger.
- 03
Keep the registration in the repo, so every change to tools or scopes becomes a pull request the pipeline checks.
- 04
Write release rules as policy as code with tests of their own. The agent can be probabilistic, the gates can't.
- 05
Sign the release and the model files. Keep provenance and an AI BOM for every build, because auditors will ask which model ran.
- 06
Give each agent its own identity from attestation at deploy, separate per environment and never pasted in.
- 07
Treat model cards and design decks as claims. Signatures, test results and admission logs are what count as evidence.
- 08
Plan retirement at design time, so switching an agent off takes one workflow instead of a hunt.
- How Cohash delivers Microsoft Entra ID: scope, roles and architecture
- How Cohash delivers Okta: scope, roles and architecture
- How Cohash delivers HashiCorp Vault: scope, roles and architecture
- Hire vetted Microsoft Entra ID engineers
- AI governance
- 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.
Three questions, about a minute
Pick an answer and we'll tell you if it's right, and why it is or isn't. The score stays in this browser.
-
Q1Someone's pull request adds an MCP tool to an agent the sponsor approved last month. What should the pipeline do?
show the answer
B. The build fails until the registration lists the tool and the sponsor approves The registration is the approved baseline. A pipeline that diffs the real tool list against it turns every new tool into a decision the sponsor makes before release.
-
Q2Your vendor's model card says the model was trained safely. What does your auditor still want to see?
show the answer
C. Test results for that build and a signature check on the model files at deploy A card is a claim. Model cards don't guarantee where a model came from, so signatures, hashes and your own test results are what count as evidence.
-
Q3Test and production share one service account for an agent, and a test log leaks its key. What stops a repeat?
show the answer
A. One identity per environment, issued by attestation With one identity per environment, a test credential can't work in production. Attestation also means there's no long-lived key to leak in the first place.