Skip to content

Using AI

The approval gate is the feature

4 min read

In the software industry, there is an enduring fascination with total automation. Whenever a new capability arrives, the immediate impulse among enthusiasts is to connect the inputs directly to the outputs and remove the human from the loop entirely.

With modern language models, this shows up as automated agents designed to read emails, generate responses, and send them without review, or bots that process customer inquiries and update production databases with zero human oversight.

Whenever I design an automated workflow, whether for my day job managing technology projects or for personal applications, I deliberately do the opposite. I treat the human review step not as an interim compromise, but as the core architectural feature that makes the system viable.

The asymmetric risk of generation versus publication

To understand why autonomous workflows fail, you have to separate drafting from publishing.

Drafting text is an inherently low-risk activity. If a language model summarizes a client meeting and misunderstands an action item, nothing harmful has occurred. The draft sits quietly in a private text window. The worst consequence is that I spend thirty seconds deleting a bad sentence.

Publishing, however, carries asymmetric risk. The moment an automated script sends an email to a client, assigns a task in a project management board, or pushes code to a production server, the action is public and irreversible. If the model misattributed a commitment, hallucinated a delivery date, or misread a sensitive tone, you cannot simply retract the message. You must spend days rebuilding professional trust.

Attempting to eliminate the human review step collapses this distinction. It takes a technology that is brilliantly suited for drafting and forces it into autonomous publishing, where its statistical quirks can cause immediate damage.

The meeting notes workflow

Consider how this plays out in routine project management.

After a complex steering committee meeting, I often take the raw audio transcript and feed it through an extraction prompt. The model does the heavy lifting: it sifts through an hour of rambling discussion, groups topics by department, and produces a structured list of proposed action items.

If I allowed that system to email the team automatically, errors would inevitably slip through. In an informal discussion, someone might jokingly suggest rewriting an entire database, or a team member might offer to help with a task without formally taking ownership. A language model frequently misinterprets casual banter as a hard project commitment.

Instead, the automation ends at a private review dashboard. I spend two minutes scanning the generated list. I clarify who actually volunteered for what, remove passing remarks, adjust the target dates, and click send.

That two-minute review step does not represent a failure of automation. It represents the best possible use of automation: the computer eliminated forty minutes of tedious transcription and formatting, while human judgment ensured the published output was completely accurate.

How coding agents apply the same boundary

We see the exact same architectural boundary in modern AI coding agents such as OpenCode, Claude Code, and Codex CLI.

When you direct a coding agent to resolve a bug or refactor a module, it does not deploy code directly to live servers. It works inside a restricted working directory. It analyzes the files, proposes specific edits, and runs test suites to verify that its logic compiles.

The final authority to merge the changes into the main repository remains strictly with the human software engineer. The engineer reviews the diff, checks for subtle edge cases, evaluates readability, and approves the commit.

The automated agent performs the laborious work of searching files and typing code, but the human retains responsibility for what enters production. Without that boundary, automated development tools would introduce catastrophic regressions into codebases within days.

Keeping accountability clear

Technology exists to serve human organizations, and human organizations run on accountability. An algorithm cannot be held accountable for a broken client relationship, a missed project milestone, or an embarrassing public statement.

When you design systems so that a human must review and approve every external action, you maintain clear responsibility. The machine accelerates the preparation; the human takes responsibility for the result. Far from being a bottleneck, the approval gate is the reason the workflow works at all.