Skip to content

Approval Systems for Coding Agents and Human Sign-Off

Coding agents need approval systems because “can edit code” is not one risk class. Reading a repo, proposing a diff, updating tests, changing CI config, and touching production infrastructure are different actions and should not share the same approval path.

The right approval system is risk-based, not tool-based.

Split actions into at least four classes:

  1. read-only exploration,
  2. bounded code changes,
  3. workflow or infrastructure changes,
  4. production-impacting or security-sensitive changes.

Each class should have a different approval expectation.

Use a matrix instead of one global permission toggle:

Agent actionDefault approval postureRequired evidence
Read files, search code, summarize issuesAuto-allow in approved repositoriesActivity log and source references
Propose a patch in a bounded scopeAllow draft, require review before mergeDiff, tests run, files touched, known risks
Modify tests or docs onlyAllow draft, review can be lighterClear scope and proof that production code was not changed
Change dependencies, build scripts, or CIRequire explicit approval before change and before mergeReason, blast radius, rollback path
Touch auth, payments, secrets, infra, or deploymentRequire strong approval and senior reviewSecurity review, test evidence, rollback plan
Execute external tools or network actionsRequire policy-based allowlistTool purpose, data exposure, logs

The matrix should be visible to engineers. If reviewers cannot explain why an action needed approval, the policy will be ignored or over-applied.

Low-risk actions can often proceed without per-step human approval:

  • repo search,
  • file reading,
  • test discovery,
  • diff analysis,
  • and local reasoning over code.

These actions create context, not change.

What should usually require review before merge

Section titled “What should usually require review before merge”

Most code-writing activity belongs here:

  • bounded implementation,
  • test updates,
  • documentation edits,
  • refactors in a known scope.

The agent can draft the work, but a human should still own the merge decision.

The merge decision matters because coding agents can be locally convincing and globally wrong. A patch may pass the narrow test it added while breaking product assumptions, security boundaries, or operational conventions that are not encoded in tests.

These usually need stricter gates:

  • dependency changes,
  • CI/CD modifications,
  • secrets or credentials handling,
  • infra or deployment changes,
  • or edits to security-sensitive code paths.

This is where coding-agent leverage can quickly turn into operational risk.

Strong approval should not mean “ask a human every time and hope.” It should define:

  • who can approve the action;
  • what evidence must be attached;
  • whether the agent can continue after approval or must stop for review;
  • how the action is logged;
  • what rollback or cleanup path exists.

That makes approval auditable instead of performative.

The wrong model is one binary rule:

  • either “the agent is trusted” or
  • “the agent is never trusted.”

Both are weak. One removes discipline; the other removes leverage. A graded approval model is the healthier operating system.

Your coding-agent approval system is probably healthy when:

  • action classes are defined by risk;
  • read, write, merge, and deploy boundaries are separated;
  • the human reviewer remains accountable for consequential changes;
  • verification requirements scale with risk class;
  • and the team can explain why a given agent action did or did not need approval.

Before standardizing the approval model, test it against realistic failures:

  1. the agent wants to edit files outside the assigned scope;
  2. the agent adds or upgrades a dependency;
  3. the agent changes a CI workflow to make tests pass;
  4. the agent encounters a secret or .env file;
  5. the agent needs network access to fetch docs or packages;
  6. the agent proposes a migration or irreversible data operation;
  7. the agent produces a large diff that reviewers cannot inspect quickly.

If the approval system does not define what happens in those cases, it is not ready for high-agency coding work.

A useful audit trail should include:

  • task request and repository scope;
  • files read and files changed;
  • tools invoked;
  • approvals requested and granted;
  • tests or checks run;
  • unresolved risks named by the agent or reviewer;
  • final merge decision.

The purpose is not bureaucracy. The purpose is to make coding-agent work inspectable when something breaks later.