Permissions
DSCC gates every tool call through a permission mode. Modes are
defined at crates/runtime/src/permissions.rs:4–23.
Modes
| Mode | Aliases | Level |
|---|---|---|
ReadOnly |
read-only, default, plan |
Reads only |
WorkspaceWrite |
workspace-write, acceptEdits,
auto |
Writes inside cwd |
DangerFullAccess |
danger-full-access, dontAsk |
Unrestricted |
Prompt |
prompt |
Ask for each call |
Allow |
allow |
Silently allow all |
Decision logic
From permissions.rs:88–135:
- If current mode
≥required mode → allow. - If current mode is
Allow→ allow. - If current mode is
Prompt→ prompt. - If current is
WorkspaceWriteand required isDangerFullAccess→ prompt. - Otherwise → deny.
Per-tool requirements
Each tool declares a required mode via
PermissionPolicy.tool_requirements: BTreeMap<String, PermissionMode>
(permissions.rs:50–73). The default fallback for unknown
tools is DangerFullAccess.
How to set the mode
Ordered from least to most local (higher wins on conflict):
| Source | Example |
|---|---|
settings.permissions.defaultMode |
Global or project settings file |
DSCC_PERMISSION_MODE env var |
export DSCC_PERMISSION_MODE=workspace-write |
--permission-mode CLI flag |
dscc --permission-mode read-only prompt ... |
/permissions <mode> |
Change mode mid-session |
See also
- config-files.md for where
defaultModelives. - hooks.md for denying tool calls at hook level.