{ "version": "s03", "title": "Permission", "description": "Tool calls pass through hard denies, rule checks, and optional user approval before execution.", "steps": [ { "type": "user_message", "content": "Delete the temporary build directory.", "annotation": "The user asks for a filesystem action that may be safe or dangerous depending on the path." }, { "type": "assistant_text", "content": "I'll check the target before running the command.", "annotation": "The model can propose a tool call, but the harness decides whether execution is allowed." }, { "type": "tool_call", "toolName": "bash", "content": "rm -rf /tmp/build-cache", "annotation": "A destructive-looking command enters the permission pipeline." }, { "type": "system_event", "content": "Gate 1 hard deny: pass\nGate 2 rule match: destructive command -> ask user", "annotation": "The command is not absolutely forbidden, but it requires confirmation." }, { "type": "system_event", "content": "User approval: allowed", "annotation": "The runtime pauses before execution and resumes only after approval." }, { "type": "tool_result", "toolName": "bash", "content": "(no output)", "annotation": "Allowed commands continue through the normal tool result path." } ] }