Page 6 of 8~114 min topic

Agentic coding tools

Guardrails: permissions and what not to automate

The right amount of autonomy isn't a fixed setting — it scales with how easy a change is to review, undo, and verify.

~14 min this pageLimits and tradeoffs

1Learn the idea

Read

The two variables that decide the checkpoint

Across the whole curriculum you'll see this pattern repeat (it's the same logic behind human-in-the-loop design for AI systems generally): the right amount of human review scales with blast radius (how much can go wrong, and how visibly) and reversibility (how easily you can undo it if it does). A typo fix has tiny blast radius and is trivially reversible with version control — low review need. A schema migration that drops a column has large blast radius and may not be reversible at all once it runs — high review need, always.

Read

Concrete categories worth a standing rule

  • Version-controlled code changes — generally safe to let an agent iterate on with a final diff review, since git gives you an undo button
  • Destructive filesystem or database operations — deletions, drops, truncations — should always pause for explicit confirmation, regardless of how routine the agent's plan claims it is
  • Anything touching secrets, credentials, or auth logic — deserves a human look even when the diff is small, because the cost of a subtle mistake here is disproportionate to its size
  • Commands that reach outside your machine — deploying, pushing to a shared branch, calling a paid external API, sending real emails — should require a conscious "yes," not happen as a side effect of a broader task
  • Anything in production — a categorically higher bar than local or staging work; most teams should never let an agent apply changes directly to production without a human-approved step in between

Read

Sandboxes reduce the cost of mistakes

Many agentic tools run commands in a constrained environment — restricted filesystem access, limited or no network access, no ability to touch certain system calls — precisely so that a mistaken or even malicious command does less damage than it would unrestricted. Understanding that your tool has a sandbox (and what it does and doesn't cover) is worth five minutes of reading its documentation once, rather than discovering the boundary the hard way.

Read

"It's just following instructions" is not a defense

If an agent runs a destructive command because you (or a task description) told it to, the fact that it was "just doing what it was told" doesn't undo the damage. The responsibility for scoping a task safely sits with the person writing the task, the same way it would if you delegated the same instruction to a new hire without checking their judgment first. This isn't a reason to avoid autonomy — it's a reason to be deliberate about where you grant it.

Read

A simple default worth adopting

When you're unsure whether a task needs a checkpoint, default to reviewing the diff before it takes effect. The cost of an unnecessary review is a few extra seconds. The cost of an unreviewed mistake — especially anything destructive or hard to reverse — is usually much larger than the time saved by skipping the review. Loosen the default only for task categories where you've deliberately decided the tradeoff favors speed.

Go deeper

Before you start

Why this matters

Every agentic tool gives you some form of permission control: approve each file edit individually, approve each terminal command, or let the agent run more autonomously within a session. None of these settings are inherently "safe" or "unsafe" — the right choice depends entirely on what the agent is being asked to do. A permissive setting is fine for a well-scoped bug fix in a personal project; the same setting on a production database migration is a real risk.

In the wild

See how this idea shows up as a product and a company — then come back to the lesson. Skills transfer across vendors.

Continue learning · glossary & guides