Permissions
ACP permissions let a running thread pause when an agent needs approval for a sensitive runtime action. A good permissions flow makes the requested tool, input, and reason visible, lets the user approve or deny one concrete request, and then resumes the thread without losing execution context.
Understand the permission model
Runtime permission requests are thread-scoped. When a tool action requires more access than the current mode allows, the thread can enter permission_asked state and expose a pending request with a request ID, tool name, input, current mode, required mode, reason, and timestamp.
Surface pending requests clearly
Permission UX should be visible wherever the user monitors work: the current thread, the thread list, and notification-style surfaces. The application should query pending requests for the relevant thread and only show cards for requests that still need a decision.
Approve or deny one request at a time
A permission decision should target exactly one pending request. Approval lets the paused action continue. Denial tells the agent to continue with a safer plan when possible, especially when you include a concise reason.
Design for safe defaults
Permission systems are most useful when they stay narrow. The goal is not to make users approve every harmless action; it is to interrupt only when a runtime action meaningfully expands access, risk, or blast radius.