Common Guardrail Mistakes That Undermine Human Oversight
This page lists recurring mistakes that make human-in-the-loop controls look present while failing under real traffic.
Search across all documentation pages
This page lists recurring mistakes that make human-in-the-loop controls look present while failing under real traffic.
Use it in design reviews and incident retros when an "approved" agent still caused damage.
Rubber-stamp approvals - humans click approve without reading args because volume is impossible.
Approve the title, not the payload - UI shows "Send email" while body/recipient differ from the draft the human skimmed earlier.
Timeout equals approve - silence ships the irreversible action.
Self-approval for high risk - the requester alone approves refunds or prod deploys.
Emoji / free-text as the only decision record - "lgtm" in Slack with no pending_id.
Prompt-only safety - "never send email without asking" lives only in the system prompt.
Kitchen-sink tools at R0 - one mega-tool can read and refund.
Staging uses prod credentials without prod gates - "it's only staging" still wires live Stripe.
MCP / plugin auto-import as trusted - new servers inherit auto-run.
Handoffs expand privilege - specialist inherits admin tools through a shared toolkit.
No kill switch - only max turns, which a thrashing agent burns completely.
Kill flag checked too late - boolean flips after the send already started.
In-memory kill on multi-instance deploys - one replica never sees the trip.
Infinite retries instead of escalation - agent guesses through 404s and policy edges.
Soft notify used for hard risk - "we'll undo the refund if wrong" when undo does not exist.
No audit of decisions - cannot prove who approved what args.
Secrets in approval UIs and logs - tokens pasted into Slack packets.
Bypass paths around the gate - notebooks, cron, or admin scripts call providers directly.
Missing idempotency - double approve or resume sends twice.
No ownership of HITL policy - rings and queues drift per squad.
Optimizing only for autonomy rate - success = fewer human touches, even when risk rises.
Hiding uncertainty from users - spinner forever instead of escalate/ask.
Training humans to ignore alerts - pages for every draft.
Shipping gates without drills - first kill or dual-control attempt is during an outage.
By theme, not strict severity. Rubber stamps, missing dispatcher enforcement, and absent kills usually hurt first in production.
Demos can use fake tools. The mistake is promoting demo wiring with real credentials and no gates.
Measure median time-on-packet, approve rate near 100%, and sample reviews where args were wrong but approved. Pair with volume per operator.
No. Frameworks provide pause primitives. Policy, rings, packets, audit, and kill still need product design.
Bypass paths (18), prompt-only safety (6), and timeout-as-approve (3).
Pick a mistake number, link the fix page, add a best-practices checkbox owner, and set a verification test.
They need honest escalation, kill/cancel, and gates on any side effects (send, pay, delete). Full dual control may be overkill for personal notes.
Put irreversible tools behind a hard gate in one dispatcher and fail closed on timeout.
Stack versions: Pins from the category manifest (verify at build): OpenRouter (~315+ models, July 2026 pricing/fees); LangGraph 1.0+; CrewAI 1.14+; Microsoft Agent Framework 1.0; Vercel AI SDK 6; Pydantic AI (latest); LlamaIndex (latest); OpenAI Agents SDK (latest + MCP); MCP (Linux Foundation governance); A2A (HTTP+SSE+JSON-RPC 2.0); Solana
@solana/web3.js+@solana/spl-token.
Reviewed by Chris St. John·Last updated Jul 16, 2026