Permission Modes
Rusty enforces a tiered permission system to control what tools can do. There are four modes:| Mode | Description |
|---|---|
default | Interactive prompts for write/execute operations |
accept-edits | Auto-allow file writes, prompt for bash execution |
bypass | Allow all operations without prompting |
plan | Read-only mode, no write or execute operations |
Permission Levels
Each tool has a permission level that determines what it can do:| Level | Description | Examples |
|---|---|---|
None | No special permissions needed | todowrite, agent |
ReadOnly | Can read but not modify | file_read, grep, glob, web_fetch |
Write | Can create or modify files | file_write, file_edit, apply_patch |
Execute | Can run system commands | bash (classified per-command) |
Bash Command Classification
The bash tool uses a command classifier to determine permission level. Commands are classified as either read-only or requiring write/execute permissions.Read-Only Commands
These commands bypass write permissions and are auto-allowed:ls,cat,head,tail,wc,findgit status,git log,git diff,git showcargo check,cargo test,cargo clippy,cargo buildnpm list,npm test,yarn test- Any command piped through read-only commands
Write/Execute Commands
These commands require explicit permission (indefault mode):
git commit,git push,git checkoutrm,mv,cpnpm install,cargo rundocker,ssh,curl
Permanent Allowlist
To permanently allow specific tools without prompting, add them to theallowed_tools array in ~/.rusty/settings.json:
tool_name:exact_invocation_prefix. The allowlist matches the beginning of the tool invocation.