Docs/Tools & Features/Permissions & Security

Permissions & Security

Dynamo's permission system balances safety with speed.

Permission Levels

LevelBehaviorExamples
SafeAuto-execute, no promptread_file, list_files, search_files, git_status, memory_list
WritePrompts once per sessionwrite_file, edit_file, git_commit, web_fetch
DangerousAlways promptsrun_command
BlockedRejected immediatelysudo, force-push to main, command substitution

Approval Menu

When a tool requires approval, you see:

  • Human-readable description of what the tool will do
  • Expandable raw call details (press → to expand)
  • Diff view for file edits with line numbers and colored +/- lines
  • Allow / Allow all / Deny options

"Allow all" is scoped per-tool per-model. Allowing write_file for Claude doesn't auto-allow it for GPT. Switching models and switching back preserves your approvals. Approvals persist across session resume.

Permissive Mode

Skip all prompts except blocked commands:

bash
dynamo -y
dynamo --permissive

Even in permissive mode, blocked commands and protected file writes still require approval.

Per-Model Permissions

Permissions are tracked per model. Switching models resets the approval state, so a more powerful model doesn't inherit permissions from a weaker one.

Sandbox Mode

Controls filesystem access for all tools including shell commands.

Moderead_filewrite/editlist/searchrun_command
projectproject onlyproject onlyproject onlyblocks external paths
full (default)anywhereproject onlyanywherepermission gated
unrestrictedanywhereanywhereanywherepermission gated

Set via CLI (--sandbox project), config (ai.sandbox: project), or at runtime (/sandbox).

In project mode, shell commands that reference absolute paths outside the project are blocked. sudo is always blocked regardless of sandbox mode.

Security Hardening

  • Command injection detection$(), backtick substitution, ${}, process substitution are always blocked
  • Compound command splittingcmd1 && cmd2 — each part checked independently
  • Protected files — writes to .env, .git/config, .ssh/*, .bashrc, credentials.json, *.pem, *.key always require explicit approval, even in permissive mode
  • Secret scanning — API keys detected in memory saves and file writes are flagged