If you want to know how the industry builds AI agents right now, you read Anthropic’s cookbook. It is the closest thing the field has to a canonical build guide, from the lab that arguably understands agents best. So I read the whole thing looking for one specific thing, and it is instructive precisely because of what is not there.
The cookbook ships a genuinely impressive catalog of autonomous agents. A Site Reliability agent that reads logs and runbooks, pinpoints a root cause, and opens a fix PR. A threat-intelligence agent that autonomously queries multiple intel sources and maps findings to MITRE ATT&CK. A vulnerability-detection agent that threat-models a target and hunts memory-safety bugs. Async multi-agent orchestration with peer messaging and dynamically-spawned subagents. A chief-of-staff agent coordinating a team through hooks and plan mode. These are excellent at what they scope. And every one of them is governed the same two ways: per action (is this individual step allowed?) and, at best, by a human approving one step (the SRE agent waits for someone to approve its PR).
Take the most sophisticated case, because it is the fair one. The SRE agent doesn’t just act — it waits for a human to approve the fix. That is real, careful governance. But it is governance of one decision: this PR, right now. Nothing in the pattern asks the question that matters when you run that agent a thousand times a day: across everything it has read, escalated, and touched this session, what has its authority composed into? The approval gate is on the last step. The trajectory is unwatched.
The blind spot is structural, not a bug
A governance gate, in almost every system I have looked at — the cookbook included — is memoryless. It scores one decision (is this action permitted? is this spend approved? is this risk acceptable?) and forgets it before scoring the next. That is usually the right design for a single action. It leaves exactly one thing uncovered: a risky sequence of individually-fine actions. Ten actions each 0.5 on a 0-to-1 risk scale are all below a 0.65 per-call threshold, so a memoryless gate waves each one through, correctly, in isolation. But 0.5, ten times, is a trajectory, and a gate that forgets the last decision cannot see a trajectory. It cannot add up what it refuses to remember.
Stack the layers the build canon does cover and the gap is obvious by what comes after it. Identity establishes the acting principal. Authorization constrains its permissions. Policy evaluates individual actions. Tool-scoping limits what each role can call. And then… nothing evaluates the accumulated trajectory. There is no layer whose job is to ask: given everything this principal has done in the last N hours, what has it composed into? That missing layer is the subject of a preprint I published this month — “Authorized but Composed” (DOI 10.5281/zenodo.21400261). And the reason the omission matters is not academic: the Hugging Face breach three weeks ago was exactly this shape — roughly 17,000 individually-authorized-looking actions, run by an autonomous agent framework, that composed into an intrusion no single step would have been denied for. The build canon teaches you to build that agent. It does not teach you to govern what it accumulates to.
An autonomous agent doesn’t need one forbidden action. It needs a sequence of permitted ones that composes into an outcome no single gate would deny.
I want to be careful here, because the easy version of this argument is wrong and I’m not making it. The cookbook is not deficient, and these agents are not unsafe. Per-action policy and human approval are the right controls for what they govern, and Anthropic scopes them well. My claim is narrower and, I think, more useful: governance of accumulated authority is out of scope in the canonical build guide. When the most authoritative reference in the field treats a layer as out of scope, that is the strongest evidence I know of that the layer is a real, unclaimed category — not a solved problem, and not my invention either. It is simply the next layer up, and almost no one is building it yet.
What a composition layer actually does
Cross-session risk composition is a stateful layer that sits above the per-action gate — the layer that would come after “tool-scoping” in that stack. For each subject — an agent, a session, an identity, a credential, a campaign — it accumulates a risk weight per decision, composes those weights across a rolling window with optional time decay, and escalates when the accumulation crosses a threshold, even when every individual decision passed its own gate. A worked example ships in the open-source engine’s tests: an agent whose seven consecutive decisions each evaluate to RUN individually composes past the fail threshold, and the composed verdict becomes FREEZE. No single gate saw a problem. The sum did. That is the shape an SRE-style agent’s session presents — a principal whose every action is individually approvable while its accumulated authority climbs unwatched.
Not a paper argument — it runs, honestly labeled
The reason I can write this without hand-waving is that the composition engine is open source (constitutional-agent, pip install constitutional-agent), and it runs in my own system as the reference implementation of the Enterprise Agent Architecture. My gate-status endpoint exposes a composed-risk signal that did not exist in the codebase two weeks ago. When I captured it, it read:
I have to be honest about what that reading’s subject is, because it is not an agent’s decision trajectory — it is my system’s security environment. The same accumulation mechanism, applied to a different input: each security event in the last 72 hours converted to a 0–1 weight by severity, composed with a 24-hour decay half-life, capped at 1.5 per origin so no single source can trigger HOLD alone. Seven contributing events across three origins — and three origins is not three actors; they sat inside one /24, which could be one operator, NAT, or shared infrastructure. The mechanism is shared with the agent-trajectory case; the subject is not, and treating them as the same thing would be the sleight of hand I’m trying to avoid.
72h · decay half-life = 24h · contributing composed events = 7 · distinct origins = 3 (all within one /24) · per-origin ceiling = 1.5 · HOLD = 2.00 · FAIL = 3.50 · enforcement = observe-only. Captured 2026-07-18 ~22:37 UTC from the live gate-status endpoint. Self-attested: a real reading from the running system, not an independently audited record. The per-origin cap is my integration’s noise-containment logic, not part of the published constitutional-agent module.
That reading proves the path is active: the composition mechanism is wired into production, reading live inputs, producing an interpretable value that crossed its own threshold. It does not prove the signal is calibrated or operationally useful — one value is not validation — and it is deliberately observe-only. Binding an uncalibrated threshold against live event volume is how you cause the incident you were trying to prevent. The observe-only telemetry is the calibration clock; the module (constitutional-agent v0.6.0) is new and not yet hardened to the degree of the core gates. The point is not that my 2.14 is a finished control. The point is that the layer the cookbook leaves out is not hypothetical — it exists, it runs, and you can read its code.
The build canon is excellent at teaching you to build autonomous agents, and correct in how it governs each of their actions. It stops one layer short: nothing governs what an agent’s authority accumulates to across a session. That is not a knock on the cookbook — it is the map of where the next layer goes. If you run an agent workforce, the honest question is whether anything in your stack evaluates the trajectory, or whether, like the canonical recipes, you are approving the last step and trusting the sum. You cannot tune a per-action threshold to see a trajectory you refuse to remember. The fix is a stateful layer that accumulates risk across decisions and sessions and escalates on the sum — and it is worth building in the open.
Where does your agent stack sit on this?
If you build agents from patterns like the cookbook’s, the question is direct: what does a principal in your system compose into over a session, and is anything watching? The composition engine described here is open source (constitutional-agent, pip install constitutional-agent). The free Governance Stress Test scores your stack across identity, policy, and the decision layer — and shows you where the cross-session gap is.
Building an agent workforce and thinking about what its authority composes into? Tell me where you think this control breaks — research@cognitivethoughtengine.com.
Related reading
Authorized but Composed: the residual-moat argumentThe Governance Engine That Remembers
The AI Governance Gap Nobody Is Talking About: WHO vs. HOW
Frequently Asked Questions
Is this a criticism of Anthropic’s cookbook?
No. The cookbook’s recipes are excellent at what they scope, and per-action policy plus human approval are the correct controls for individual decisions. The observation is narrow: governance of an agent’s accumulated authority across a session is out of scope in the build canon. When the most authoritative agent build-guide in the field treats a layer as out of scope, that is strong evidence the layer is a real, unclaimed category — which is the point, not a knock.
What is cross-session risk composition?
A stateful governance layer that accumulates a risk weight for each decision, keyed by a subject (an agent, session, actor, identity, or environment), composes those weights across a rolling window with optional decay, and escalates when the accumulation crosses a threshold — even when every individual decision passed its own gate. A per-call gate is memoryless; composition remembers the trajectory, which is where the risk that no single decision reveals actually lives.
Doesn’t a per-call policy gate already catch risky actions?
It catches risky individual actions. It cannot catch a risky sequence of individually-fine actions — ten actions each 0.5, all below the configured 0.65 per-call threshold, compose into a trajectory no single evaluation flags. In the public documentation I reviewed for Microsoft ACS, Galileo Agent Control, Runlayer, and NVIDIA OpenShell, I did not find a documented mechanism that accumulates per-decision constitutional-risk weights across sessions and escalates on that accumulated trajectory. Composition is the layer above the per-call gate that closes that gap.
Is the composed-risk signal enforcing yet, or just observing?
Observing. It is surfaced read-only in the gate status and does not change the system state. Enforcement is gated on calibration: real security-event volume means thresholds must be tuned against live data before the signal binds, or the composition would throttle the organization on noise. The observe-only telemetry is the calibration clock — and the composition module (constitutional-agent v0.6.0) is itself new, not yet hardened to the degree of the core gates.