You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[FEATURE]: scoped auto-approval mode with expiry, persistent risk indicator and audit trail #51859
I have verified this feature I'm about to request hasn't been suggested before.
Describe the enhancement you want to request
Scoped auto-approval mode with expiry, a persistent risk indicator, and an audit trail — a user-facing "full-auto" that is explicit about what it does and what it does not do.
Related prior art (this request is a superset, not a duplicate): #51399 (documented full-auto mode), #38289 (persistent indicator), #41909 (/approve runtime toggle), #31137 / #49721 (the existing web auto-accept control is disabled under the new layout / does not respond), #47817 and #51504 (current auto-approve has cross-client and silent ask→allow degradation problems this design must avoid).
Today the web UI has auto-accept (permissions.autoaccept, mod+shift+a), but it is client-side only, session/directory-scoped, invisible while active, and has no expiry. What is missing is a deliberate, auditable escalation mode:
Requirements
Opt-in only, with a first-use confirmation explaining that auto-approval is a UX convenience, not a sandbox or isolation boundary (per SECURITY.md, the agent is not sandboxed — the UI copy must never claim otherwise).
Explicit scope: per-session (default), per-workspace/directory, or a named allowlist of tools/permission domains (e.g. edit, bash with pattern rules). Never a hidden global.
Expiry: TTL in minutes or "until session ends"; auto-revoke at expiry and on server restart.
Audit trail: every auto-approved request recorded with timestamp, session, action, patterns, and the scope that approved it — queryable, not only in the log file.
// consent record persisted server-sidetypeAutoApprovalGrant={id: stringscope: {session?: string;workspace?: string;tools?: string[]}createdAt: numberexpiresAt: number// mandatory; no infinite grantscreatedBy: "web"|"tui"// surface that granted it}// events: permission.grant.created / .expired / .revoked// reply path: permission.reply gains an optional grantID for audit
Out of scope
Isolation. Users who need real containment still need a container/VM — the docs for this mode should say so explicitly.
Benefits
Repetitive approvals are the top friction point for supervised long-running sessions; doing this deliberately (scope + expiry + audit) instead of a silent "yolo" keeps the security posture honest and fixes the discoverability problem reported in #31137/#49721.
Related work — the auto-accept/auto-approve cluster
Existing surface the mode should build on: permissions.autoaccept command (mod+shift+a), per-session/directory autoAccept store (packages/app/src/context/permission.tsx, permission-auto-respond.ts), and server-side permission config / OPENCODE_PERMISSION env.
This is a frequently re-requested capability (#51399, #41909, #38289, plus the broken-toggle bug cluster above) and the current web surface is partially broken (#31137, #49721). A deliberate design (scope + expiry + audit + per-client isolation) would resolve the feature requests and the security-adjacent regressions (#47817, #51504) in one shape instead of five separate toggles.
Feature hasn't been suggested before.
Describe the enhancement you want to request
Scoped auto-approval mode with expiry, a persistent risk indicator, and an audit trail — a user-facing "full-auto" that is explicit about what it does and what it does not do.
Related prior art (this request is a superset, not a duplicate): #51399 (documented full-auto mode), #38289 (persistent indicator), #41909 (
/approveruntime toggle), #31137 / #49721 (the existing web auto-accept control is disabled under the new layout / does not respond), #47817 and #51504 (current auto-approve has cross-client and silentask→allowdegradation problems this design must avoid).Today the web UI has auto-accept (
permissions.autoaccept,mod+shift+a), but it is client-side only, session/directory-scoped, invisible while active, and has no expiry. What is missing is a deliberate, auditable escalation mode:Requirements
SECURITY.md, the agent is not sandboxed — the UI copy must never claim otherwise).edit,bashwith pattern rules). Never a hidden global.askrules must never silently degrade toallow(see permissions: ask rules for MCP tools are silently degraded to allow #51504).API sketch
Out of scope
Isolation. Users who need real containment still need a container/VM — the docs for this mode should say so explicitly.
Benefits
Repetitive approvals are the top friction point for supervised long-running sessions; doing this deliberately (scope + expiry + audit) instead of a silent "yolo" keeps the security posture honest and fixes the discoverability problem reported in #31137/#49721.
Related work — the auto-accept/auto-approve cluster
Existing surface the mode should build on:
permissions.autoacceptcommand (mod+shift+a), per-session/directoryautoAcceptstore (packages/app/src/context/permission.tsx,permission-auto-respond.ts), and server-sidepermissionconfig /OPENCODE_PERMISSIONenv./approveruntime toggle per session — the TUI-side equivalent.permission: allowin the Settings toggle.askrules for MCP tools silently degrade toallow— this mode must not mask it.ask— same guardrail family.--autostalls background tabs; toggle disabled without session; sound spam;attachlacking--auto.Triage note for maintainers
This is a frequently re-requested capability (#51399, #41909, #38289, plus the broken-toggle bug cluster above) and the current web surface is partially broken (#31137, #49721). A deliberate design (scope + expiry + audit + per-client isolation) would resolve the feature requests and the security-adjacent regressions (#47817, #51504) in one shape instead of five separate toggles.