← ClaudeAtlas

subagent-request-approvallisted

Use when a mutative command was blocked by the hook and you need to request user approval, or when presenting a plan for a T3 operation before executing it
metraton/gaia · ★ 3 · AI & Automation · score 76
Install: claude install-skill metraton/gaia
# Subagent Request Approval ## Overview When the hook blocks your T3 Bash command, it returns a `[T3_BLOCKED]` message ending in `approval_id: P-{uuid4hex}`. This skill is how you turn that block into an `APPROVAL_REQUEST`: copy the hook's operation fields and `approval_id` into your `agent_contract_handoff`, set `agent_state: "APPROVAL_REQUEST"`, and wait for the orchestrator to relay the user's decision. The hook authors and fingerprints the sealed_payload; you relay it back in your APPROVAL_REQUEST. Per `agent-protocol`, build this by-value via the `gaia contract` CLI as the primary path -- `gaia contract set agent_status.agent_state APPROVAL_REQUEST`, then `gaia contract fill --json '{"approval_request": {...}}'` with the hook's fields, then `finalize`. But the CLI build does not replace the fence: the SubagentStop gate parses the fenced `agent_contract_handoff` block out of your response text, not the finalized DB row, so you still close the turn by emitting the fence -- copied verbatim from what you built -- in your final message. A finalized `APPROVAL_REQUEST` draft with no matching fence in the response text is invisible to both the gate and the orchestrator's presentation. **Attempt first.** Run the T3 command and let the hook block it -- do not pre-ask the user for permission. Pre-asking either requests a plan the hook would reject anyway or stalls a command that would have passed; either way it wastes a turn and trains you to second-guess the gate that exists t