The Governance Problem Autonomous Agents Force
An AI agent that can modify production IAM policy without a log is a liability. An AI agent that logs everything but cannot do anything is a dashboard. The governance problem for autonomous infrastructure is threading that needle — giving agents real authority to act while keeping the blast radius governable.
The wrong answers show up quickly. Blanket permission prompts (“can this agent make a change? yes/no”) produce rubber-stamp approvals within a week. Whitelisting every possible action up front produces either a tiny permission set that covers nothing useful, or a huge one that amounts to root. Neither lasts in production.
The pattern that works is two-layered: an immutable audit trail covering every agent action regardless of tier, paired with approval gates tuned to action reversibility and blast radius — not to agent identity or seniority.
Immutable Audit Trail
The first layer is the log. Every agent action gets an entry, period. The entry includes:
- Actor (which agent executed the action).
- Requester (human user or upstream agent that triggered it).
- Approver (for gated actions; null for auto-executed in-policy work).
- Action class (enumerated: stop_ec2_instance, apply_s3_lifecycle, generate_remediation_pr, etc.).
- Scope (account, region, resource IDs affected).
- Parameters (the specific change made, serialized).
- Blast radius estimate (number and class of resources affected, reversibility).
- Outcome (success, failure, rolled back, gated, rejected).
- Timing (requested, executed, completed).
- Cryptographic chain (hash of previous entry embedded in the current one).
The chain matters. A tamper-evident append-only log is the difference between “we had audit logs” and “we had audit logs we can prove were not modified after the fact.” Auditors in SOC 2 CC8, HIPAA §164.312(b), and FedRAMP AU-9 all look for this property; agents modifying their own trail is the sort of finding that sinks the audit.
Observe-tier reads are logged too. A cost-agent query for billing data is an action; it touches customer data, even if read-only. The same reasoning that requires logging a write requires logging a read against sensitive data.
See the IAN team run on your cloud. We connect to your AWS account via a scoped read-only role, run the Observe-tier agents, and leave you with a concrete audit report — cost waste, security exposure, compliance gaps, and a labor-offset estimate. You keep the findings regardless of next steps. Get a free infrastructure audit →
Approval Gates Tuned to Reversibility
The second layer is the approval policy. The key insight: the right threshold for approval is reversibility and blast radius, not actor identity. A senior engineer approving an irreversible change is the right path; a junior engineer rubber-stamping a reversible change is overhead.
A useful three-bucket cut:
No gate (auto-execute). Reversible in-policy work: stopping idle EC2 (can restart), applying S3 lifecycle to dev buckets (can reverse within retention), generating a remediation PR (humans review the PR before merge), routing an alert to an owner. The agent acts; the audit trail records. Humans see the result but do not sit in the loop for each action.
Gated with approver (approval before execution). Reversible-but-material work, or in-policy work in a sensitive environment: closing a security group in production, stopping a non-idle EC2, deploying a service without a rollback path, merging a remediation PR. The agent stages the action, a qualified approver confirms, then the action executes. Approval must be from a human (or, for scripted approvals, a human-owned policy), not the requesting agent.
Always gated with separation-of-duties (Administer-tier). Irreversible, org-wide, or policy-modifying work: adding an IAM role, changing billing, modifying the approval policy itself. Approval required, and the approver must not be the requester. This is the tier where the controls of the controls live. Separation-of-duties is a hard constraint, not a suggestion.
Blast Radius Estimation
The gate classifier is only as good as its estimate of blast radius. A naïve rule like “any production change needs approval” produces an approval queue nobody can keep up with. A sophisticated rule — “any change that affects more than N resources, or any change in a class with historically high rollback rate, or any change made during a freeze window” — filters the approval queue down to actions that actually benefit from human review.
The components of a working blast-radius estimator:
- Resource count affected by the action (stop 1 EC2 vs stop 50).
- Resource class sensitivity (EC2 stop is reversible; S3 delete is not).
- Environment (prod weighs differently from staging).
- Change class historical outcome (what fraction of this class of change was rolled back in the last 90 days?).
- Temporal context (are we in a freeze window? deployment window? on-call handover?).
- Dependency reach (what depends on the affected resource?).
The estimator should be conservative by default: overestimate blast radius, gate more often, loosen on evidence. The opposite failure mode (under-estimating, auto-executing too much) is the one that ends careers.
Evidence Automation
The output of a properly designed audit trail plus approval policy is evidence that auditors ask for — without a quarterly scramble. Typical evidence requests:
- “Show us the last 50 IAM policy changes, with approver and justification.”
- “Show us all changes made in the audit window where the approver was different from the requester.”
- “Show us all Observe-tier access to production customer data.”
- “Show us the change-management workflow for a deployment to production.”
Each of these is a query against the audit log. The evidence is the log itself. What used to be a quarterly evidence-collection sprint becomes a SQL query, which is what SOC 2 Type II auditors actually want to see.
What to Refuse to Automate
A governance framework that does not explicitly name what it refuses to automate is incomplete. The hard non-goals:
- Legal and HR decisions. Agents can surface a signal; humans decide.
- Customer-facing incident communications. Agents can draft; humans send. The liability for external messages is not something to automate.
- Board-level reporting. Summaries are fine; conclusions are not.
- First deployment of a new service class. New classes need human validation before the pattern is trusted.
- Any action the agent cannot estimate the blast radius of. If the estimator returns “unknown,” the gate is “reject” until a human classifies.
Being explicit about what not to automate is what distinguishes a responsible agent team from a liability.
The Pattern, Compressed
Log everything immutably. Gate on reversibility and blast radius, not seniority. Separate duties on the Administer tier. Refuse to automate what you cannot governably automate. And expose the whole apparatus to the customer — not as a black box, but as a policy they can inspect, modify, and audit.
Done right, autonomous agents become less risky than the status quo, not more. The status quo is a human clicking through a production dashboard under deadline pressure at 2 AM with no audit trail. The governed agent version is a logged, approved, reversible action taken before the human had to be woken up at all.
Next step: talk to the team
30 minutes. We'll look at your cloud together and scope what we'd take off your plate — see pricing.