The Agent That Wrote the Code Cannot Approve It
Anthropic published a playbook for building software with AI agents on 21 August 2026. It is not a pitch for faster coding. It is a description of where a gate belongs at every point an agent acts: a deterministic hook that can allow, ask or block, an identity that separates what the agent did from what the engineer did, and a production boundary the agent cannot cross by itself.
Event analysed: . This analysis was published on 23 August 2026.
Anthropic published The AI-Native SDLC playbook on 21 August 2026, written by Louis Claxton, describing six non linear stages, Plan, Design, Build, Test, Deploy and Maintain, run as a loop rather than a straight line, with each stage writing an artifact to version control that the next stage reads: intent.md, spec.md, plan.md, a diff and its tests, a pull request with its review findings, and an incident record, together forming what the playbook calls the audit trail. Anthropic states that humans remain accountable for every decision that requires judgment, and that human attention moves with the artifacts that need review rather than disappearing. The mechanism Anthropic assigns to enforce that is the hook: a script that runs before Claude acts and can allow, ask or block, described as the deterministic control standing behind a skill, which is advisory. Team hooks are checked into a repository's settings; non negotiable hooks live in managed settings owned by a platform or IT team, which an individual engineer cannot switch off. The playbook places a specific hook at the release gate in its Deploy stage: a production deploy hook that blocks the release until a named release manager authorizes it, with per environment permission tiers setting how much the agent may do on the way to that gate. It states separation of duties is preserved because the agent that wrote the code has no way to approve it, and that each non interactive agent run carries its own identity, so a pipeline log separates what the agent did from what the engineer who triggered it did. In its Test stage, a review policy applied to every pull request logs findings, fixes, ratings and approvals in the PR history, with the human approval itself enforced through branch protection rather than through the review agent. Anthropic published a related, earlier post on 21 July 2026 describing how its own security team runs a related model internally, including a claim that over 80 percent of code merged into Anthropic's own codebase is authored by Claude. That post is a distinct piece about Anthropic's own deployment, not a claim this playbook makes about its readers.
Most coverage of an AI coding company publishing a process document is not worth a second look. This one is, because of where Anthropic chose to put the enforcement.
The AI-Native SDLC playbook, published by Anthropic on 21 August 2026 and written by Louis Claxton, is not an announcement of a new product. It is a description of how to structure software delivery once an agent is doing a large share of the writing, and the part that matters is not the six stages it names. It is what Anthropic puts at the seam between them.
What the playbook actually describes
The framing is explicit: the AI-native SDLC combines the old control objectives, the things a secure development process has always tried to guarantee, with new enforcement suited to a process that no longer moves at human typing speed. Instead of a linear flow from planning to deployment, Anthropic describes the process as a loop, with AI embedded at each point rather than bolted onto the end.
The playbook organizes its recommendations into plays grouped under six non linear stages: Plan, Design, Build, Test, Deploy and Maintain. Each stage ends by writing an artifact to version control that the next stage reads. In the early stages that artifact is a markdown file, intent.md, then spec.md, then plan.md, because a product owner and an agent can both read and act on the same document. From Build onward, the artifact is code itself and the records that accompany it: a diff and its tests, a pull request carrying its review findings, and eventually an incident record if something goes wrong in Maintain. Together, Anthropic states, the intent, the spec, the plan, the diff and the review findings form the audit trail. Humans remain accountable for every decision that requires judgment, and what changes stage to stage is which artifact a human's attention has to land on, not whether it lands at all.
That is the skeleton. The interesting content is the joint.
A hook, not an instruction
Anthropic draws a specific line between two kinds of control, and the distinction is the piece worth remembering after the rest of the detail fades. A skill, in Anthropic's terms, is an advisory control: guidance the agent is meant to follow. A hook is described as the deterministic layer standing behind it, a script that runs before Claude acts and returns one of three outcomes: allow, ask or block. The playbook's own logic for when you need one rather than the other is direct. A policy that must always hold needs something deterministic behind the skill, because the skill makes a violation rare and the hook makes it close to impossible.
The playbook does not treat hooks as a Deploy stage feature bolted on for release safety. It places them wherever Claude acts. In Build, a hook can allow or block an action with no human involved at all, used as a guardrail, for example blocking an edit to a database migration or infrastructure file that has no linked change ticket. In Test, a hook can stop an agent from editing the test files it is supposed to be fixing code against, closing an obvious way to make a failing test pass by changing the test instead of the code. The third outcome, ask, is reserved for the case that actually needs a person: pausing an action until a specific individual approves it, which is what a release gate requires and what an automatic block would get wrong by refusing outright.
Moona Intelligence has separately confirmed, through Anthropic's own Claude Code documentation for the underlying hooks mechanism, that a hook can fire at several points in an agent's session, not only before a tool call, and that its allow, ask and block outcomes are produced by the hook's own exit behavior rather than by the model judging itself. That is consistent with the playbook's framing: the check is external to the agent's own judgment, not a request the agent evaluates and decides to honor.
The setting a local engineer cannot turn off
A control an individual can quietly disable is not a control, and the playbook is specific about which of its hooks are negotiable. Team hooks live in a project's own settings, checked into the repository alongside the code they govern. Non negotiable hooks live somewhere else: managed settings owned by a platform team or an IT administrator, a layer an individual engineer cannot switch off from their own machine.
That split matters more than it looks. A team hook is a convention the team chose and can change. A managed hook is a boundary the team operates inside of, set by whoever owns the platform, and the playbook's own logic for hooks, that a policy which must always hold needs a deterministic backstop, only holds if that backstop cannot be locally loosened by the person the policy is meant to constrain. Anthropic's design puts that backstop a layer above the individual contributor by construction, not by convention.
A boundary the agent cannot cross by itself
The clearest single example in the playbook is the release gate. Anthropic places a production deploy hook at the Deploy stage that blocks the release until a named release manager authorizes it. Not any available reviewer, not a rule the agent can satisfy on its own: a specific person, named in the configuration, whose authorization the hook is waiting for.
Around that gate, the playbook describes per environment permission tiers that set how much an agent may do on the way to it. Authority is not one setting the agent either has or does not have. It is scoped to where the agent is standing: what is permitted while working toward a development or staging target is not automatically permitted against production, and the final step into production is walled off behind a human authorization that the agent's own output, however complete, cannot satisfy by itself.
Read against the incidents this desk has covered before, that boundary is precisely the one that goes missing when it fails. In the Terraform incident from February 2026, the checkpoint that collapsed was the separation between an agent proposing an infrastructure change and the same agent executing it, a convention that existed but depended on a human occupying the reviewer's seat. Anthropic's playbook describes that seat as a structural requirement rather than a habit: a release cannot complete without a specific, named person's authorization, enforced by a hook rather than by whoever happens to be paying attention.
The agent that wrote it cannot be the one that approves it
The playbook states its separation of duties argument compactly: it is preserved because the agent that wrote the code has no way to approve it. That is not a claim about the agent's judgment being untrustworthy. It is a claim about role, independent of how good the judgment is. The actor that produced a change and the actor that authorizes it are kept structurally apart, so that a persuasive but wrong change cannot clear its own review by virtue of having written a convincing case for itself.
The Test stage carries a version of the same idea one step earlier. A review policy, written down in a REVIEW.md file rather than left as a shared understanding, applies to every pull request. Findings, fixes, ratings and approvals from that review are logged into the pull request's own history, so the PR itself becomes the audit record rather than a decision that happened somewhere else and left no trace. But the review's findings inform an approval that is enforced through branch protection, a mechanism external to the reviewer, human or agent, that actually gates the merge. A reviewing agent can find problems. It is branch protection, not the review, that decides whether the code moves.
Two different identities in the same pipeline
The playbook's account of agent identity is a small detail with a large consequence. Each non interactive agent run, the kind that fires inside a pipeline with no person watching it in real time, carries its own identity rather than borrowing the identity of whoever triggered it. The effect shows up in the pipeline log: what the agent did and what the engineer who kicked off the run did are recorded as two different actors, not folded into one.
That is a narrow, specific claim, and it is worth being precise about what it does and does not establish. It is an attribution mechanism: a record of who or what took a given action. It is not, by itself, an authorization mechanism, and the playbook does not present it as one. The hooks and the environment tiers described above are what decide whether an action is allowed to happen. The separate identity is what lets anyone looking at the log afterward answer a much more basic question: when this ran unattended, was it the agent acting or a human standing in for the agent's session. Keeping those two questions distinct, rather than assuming a clean identity trail also proves the action was legitimate, is worth holding onto when reading any vendor's identity claims, this one included.
What this is, and what it is not
It would be easy to read all of this as Anthropic announcing a new feature. It has not. Hooks, permission modes and managed settings are existing Claude Code mechanisms, ones this desk has covered before in the context of Claude Code's classifier driven auto mode. What the playbook adds is not a capability. It is a recommended architecture for wiring those existing primitives into an organization's own process: where the deterministic gate should sit, which of its outcomes should be a hard block versus a pause for one named person, which identity a pipeline run should carry, and which of those decisions a platform team should be able to make permanent rather than leaving them as a convention an individual can quietly opt out of. That distinction matters because a playbook is a recommendation, not a rollout. Anthropic is not claiming every organization running Claude Code has a production deploy hook wired to a named release manager, and this record does not claim that either. What it documents is Anthropic's own considered answer to where that gate belongs, published as guidance for others to adopt or ignore.
It is also worth separating this piece from a second, earlier one. On 21 July 2026, a month before the playbook, Anthropic published a related post describing how its own security team runs a version of this model internally, including the claim that more than 80 percent of the code merged into Anthropic's own codebase is now authored by Claude. Moona Intelligence has not independently verified that companion post's specific claims and this record does not rely on them. It is named here only to mark a boundary: the playbook is general guidance built on Claude Code's own primitives, and Anthropic's account of its own internal practice is a separate, first person piece about what Anthropic does with those same primitives day to day. Reading detail from one into the other overstates what either actually claims.
Capable, permitted, authorized, blocked
Strip the playbook down to the distinction it keeps making in different forms, and a pattern shows up that this desk has traced in other vendors' architecture before. What an agent is technically capable of doing, generating a diff, proposing a merge, initiating a deploy, is treated throughout as a separate fact from what it is permitted to do in a given environment, which is separate again from what requires a specific other authority to say yes, which is separate again from what simply cannot execute regardless of who asks. A hook that blocks unconditionally enforces the last of those. A hook that asks enforces the third. Per environment permission tiers enforce the second. None of the four collapse into the model's own judgment about what it should do, which is exactly the complaint this desk has raised about instruction based control before: a system prompt telling an agent what not to do is a statement the model can misread, forget, or be talked out of. A hook that blocks does not ask the model to remember anything.
That does not make the architecture complete. The playbook does not describe what happens when a hook itself fails to fire, whether a determined path exists around a specific gate, or how an organization would notice if a managed setting stopped being enforced the way it was configured to be. Those are the same questions worth asking of any access control system, and Anthropic's own documentation elsewhere in the Claude Code ecosystem is candid that permission architecture is layered precisely because no single layer is asked to be sufficient on its own. This record does not have visibility into whether the playbook's specific gates hold up under adversarial pressure, and it does not claim they do.
The larger pattern
What makes this worth recording is not that Anthropic has security opinions. It is where those opinions are pointed. A year of coverage on this desk has traced the same complaint surfacing from different directions: an instruction written before an agent acts cannot anticipate every path the agent might take to a consequential action, so the control has to move to the point of execution itself. Google's Agent Gateway moved a semantic check to the moment a proposed tool call leaves the model. Microsoft's Azure SRE Agent redesign moved credential handling into a boundary the model's own reasoning cannot edit. Cloudflare's WriteGuard moved the decision behind its MCP portal rather than trusting a client side prompt.
Anthropic's playbook is the same argument applied to the software delivery process an agent works inside of, rather than to a single tool call. The unit being governed is not the model's next token. It is the play: propose a spec, write a diff, open a pull request, request a deploy. At each of those points the playbook puts a gate that is external to the agent's own reasoning, distinguishes what the agent may attempt from what requires another party's authorization, and insists that the party approving a change cannot be the party that wrote it. None of that is a claim that the problem is solved. It is evidence of where a leading agent lab believes the boundary has to sit: not in what the agent was told, but in what the agent, on its own, is simply not able to make happen.
Sources
This analysis interprets third-party reporting, research and announcements. Moona is not the original reporter of the underlying events.
