AI agents do not stay as deployed. Prompts get tweaked, tools are added, models are updated, data sources change, and workloads shift — so live behavior drifts away from what anyone approved. This is not a deployment checklist and not a periodic access review. An AI agent drift monitoring checklist is the ongoing comparison of live behavior against the approved plan bound: what the agent was allowed to do, checked against what it is actually doing.
Gartner projects that 40% of enterprise applications will incorporate task-specific AI agents by 2026, up from under 5% in 2025, so the surface for drift is growing fast. One developer documented a runaway agent loop burning over $700 in 72 hours with no budget controls. Practitioners on Reddit and Hacker News ask who gave an agent authority, and report that debugging multi-agent swarms is a nightmare without dedicated tools.
What drift actually looks like in an agent¶
Drift is rarely a dramatic failure. It is a small shift that quietly moves an agent outside its approved scope:
- Tool-call patterns changing: the agent calls tools it never used in validation, or changes the frequency and sequence of calls.
- New egress destinations: outbound traffic goes to domains or addresses that were never on the approved egress list.
- Wider data classes touched: the agent reaches data classes — for example more sensitive records — that were outside the original scope.
- Spend rate climbing: cost per hour rises against the plan, signalling loops or unexpected complexity.
- Retries and timeouts increasing: failed attempts spike, pointing at a failing tool or an agent circling a task it cannot finish.
- Approval requests clustering: repeated requests for similar actions suggest a logic error, or a boundary set in the wrong place.
- Outputs going to new storage: results land in buckets or databases the plan never named.
None of these proves malice. Each proves behaviour and approval have come apart, unnoticed.
Set the baseline first: the plan bound¶
Drift detection needs a baseline, and in the Governed Agent Mesh that baseline is the plan bound. If a unit of work cannot be expressed in the plan bound, it is not a plan and it does not run. The bound records:
plan_id— the unit of work this bound governsowner_identity— the human accountable for itagent_identity— the acting agent, inagent:[OWNER]/[NAME]formatworkload,data_class, andresources— what it does, what data it may touch, and what it may usetime_window,location,egress, andstorage— when, where, where it may send, and where it may writecost_ceilingandexpiry— the spend limit for this plan, and the moment it stops being validgrant_refs— the grant records this plan runs under
Every request, approval, block, and outcome writes an audit row, hash-linked to the row before it; a broken chain is investigated, never ignored. The plan bound says what should happen, the audit rows say what did happen — drift is the gap between them.
The AI agent drift monitoring checklist¶
Run these checks continuously where you can, and on a fixed cadence where you cannot. Each check compares a live signal to a named field in the plan bound.
- Compare tool calls to
grant_refs. Every tool invocation should match a capability in a grant the plan references. A call outside any grant is a drift event, not a curiosity. - Compare egress to the bound list. Cross-reference outbound destinations against
egress. A destination not on the list is high-severity drift. - Compare spend rate to
cost_ceiling. Count spend against the ceiling in real time and alert the owner at your policy thresholds, for example [ALERT THRESHOLDS]. Act on the trajectory, not just the breach. - Compare
data_classtouched. Audit which data classes the agent actually accessed against the bounddata_class. Reaching a higher class than approved is a critical failure. - Check identity discipline. Only the registered
agent_identitymay act under this plan. Anonymous or unregistered actors are rejected at the dispatch path, never warned — and the rejection is recorded. - Check retry and timeout patterns. A rising retry rate against the same target usually means a loop forming. Compare it to the plan's expected pattern before it becomes a spend event.
- Verify hard gates still hold. For every hard-gated action taken, confirm a recorded human approval exists in the audit chain from before execution. An action with no approval row is a failed control.
- Verify blocks are recorded with exact reasons. Every block should persist actor, action, target, outcome, timestamp, and the exact reason — and tell the owner what evidence would unblock it. A vague error teaches nobody anything.
- Recompute the hash chain. Verify audit rows still chain correctly. If the chain is broken, every drift signal after the break is suspect until the gap is explained.
- Watch
expiryapproaching. Plans and grants expire. Drift often appears near expiry, as work is rushed or quietly extended. An expired plan that is still running is drift by definition.
Warning, block, or roll back: respond by risk tier¶
Not all drift deserves the same response. Tier by consequence, not by frequency.
Bounded-auto drift: record and review
Small deviations inside an approved plan — a changed call sequence, a modest rise in resource use inside every bound — are recorded as audit rows and reviewed weekly. A single deviation is noise; a repeating one is a pattern asking for a tighter bound.
Hard-gated drift: fail closed
Any drift touching the hard-gated list fails closed: blocked, recorded with the exact reason, and never retried automatically. These actions always require a recorded human approval, with no auto-grant path, ever:
- Moving money or committing spend above [THRESHOLD]
- Accepting contracts, terms of service, or legal agreements
- External outreach to anyone outside the team
- Accessing, reading, or transmitting credentials or secrets
- Changing agent permissions or grants
- Any action with legal or regulatory consequences
The acting agent can never approve its own action, and a denied or missing approval produces a recorded block — never a silent skip and never a warning the agent can walk past. If drift shows a hard-gated action already happened without approval, treat it as an incident: halt the plan, preserve the audit rows, and roll back to the last bound the agent was actually following.
Draft-only work: keep it draft-only
Drift also appears when draft-only work — proposals, composed messages, plans — starts executing or contacting someone. Drafts never execute; sending is a separate, hard-gated action.
A weekly drift review in five steps¶
Continuous checks catch events; a short weekly review catches patterns.
- Pull the week's audit rows. Start with blocks, approvals, and anything flagged against the checklist above.
- Diff behaviour against the plan bound. Where live behaviour and the bound disagree repeatedly, decide which one is wrong: tighten the bound enforcement, or re-approve a changed plan properly.
- Shrink stale grants. Remove capabilities in
grant_refsthe workload no longer uses. Least privilege is maintained, not assumed. - Test one block. Trigger a deliberately out-of-bound request and confirm it fails closed with a recorded reason. A control you never test is a hope.
- Record the review itself. Write the review — reviewer, findings, changes — as an audit row. The monitoring process is evidence too.
Common failure modes¶
- Dashboards nobody acts on. Monitoring that only displays is decoration. Every drift signal needs an owner and a response defined in advance.
- Warnings that decay into banners. Warning-only paths are prohibited for any action with external or financial side effects. If everything warns, nothing blocks.
- Unlabelled synthetic rows. Synthetic or demo audit rows must be labelled "synthetic demo" in the row. Unlabelled test data makes real drift unreadable.
- Secrets in the audit data. Audit rows never contain secrets or credentials; that material lives outside the log. A log full of secrets is a target, not evidence.
- Baselines that never change on purpose. Plans legitimately change — through a new, recorded approval. Drift is change without that record.
Before you call it done¶
- Every active plan has a complete plan bound, with
cost_ceilingandexpiryset. - Live tool calls, egress, storage, and data classes are compared against the bound on a defined cadence.
- Hard-gated drift fails closed and is recorded with an exact reason.
- The audit hash chain verifies, and synthetic rows are labelled.
- A weekly review diffs behaviour against the bound, shrinks stale grants, and tests one block.
- Every review and change is itself recorded.
If any line is missing, you have observability, not drift monitoring. The Governed Agent Mesh Playbook — Studio Edition gives you the full system this checklist plugs into: the six adopt-as-is policy templates, the validated plan-bound and audit-row schemas, the risk-tier worksheet, and the 14-day rollout that installs each layer in order. Get the Studio Edition at https://ghostcorpnet.gumroad.com/l/hdigmr.