adr 0044 personal chat command approvals - Alshival-Ai/neural-labs GitHub Wiki
ADR 0044: Personal chat command approvals
Status: Accepted
Decision
Expose Ask when needed / Do not ask in the private chat composer. Default to
on-request. Save the non-secret preference per actor in browser local storage;
submit it explicitly only for turns.start. The control plane validates the enum
and purpose, binds it to the authenticated actor/session/connection/generation
in a durable execution lease, and revalidates the same policy for the whole turn.
The internal purpose turns.start:no-prompt persists the choice in the existing
lease table; verification returns the logical turns.start purpose and the bound
approval mode. No schema migration is needed. Old clients and existing leases
retain the previous behavior.
Codex receives approvalPolicy=never with sandbox=workspace-write and network access under host egress policy. It never receives danger-full-access. Claude retains its structured permission protocol: after live grant validation, the broker permits only configured native command/file tools and Neural Labs MCP tools without prompting. Unknown tools are denied; read-only grants cannot use write/command tools. MCP handlers retain independent capability enforcement. The no-prompt branch does not apply to background execution. Browser action confirmation and user questions remain separate.
The UI locks changes during active/queued work. Other tabs cannot mutate a running lease. Turn-started events retain the selected approval mode. Neither saved model preferences nor Team/background authorization are widened.
Verification
Cover explicit/default policy, actor separation, persistent lease renewal and revocation, rejection of no-prompt requests for non-chat operations, new/resumed Codex sandbox parameters, Claude allowed/unknown/read-only tools, and cancellation on lease revocation. Use synthetic accounts in isolated PostgreSQL and fake protocol streams; a real provider inference is an owner product test, not required to set policy.