A constant stream of approval prompts is slowing you down, but enabling every Roo Code permission would turn convenience into uncontrolled execution.
The fastest safe fix is to start with read-only access, then approve only scoped and reversible edits, commands, browser actions, and MCP tools after each stage passes its evidence checks.
This guide is for individual developers who want fewer interruptions, teams preparing a remote development environment for continuous Roo Code tasks, and security or platform engineers reviewing agent permissions, credentials, and MCP boundaries.
Roo Code auto-approval 2026 starts with a deny-by-default boundary
Roo Code exposes separate approval categories for reading files, editing files, running commands, browser use, MCP access, mode switching, and retrying requests. An approved action runs without another confirmation prompt, so the top-level auto-approval switch is not a harmless speed setting. It changes how much authority the agent can exercise without you watching each step. The official auto-approval documentation lists these action groups and recommends starting with read-only operations.
Before changing any checkbox, write down five boundaries:
- Read access: Which repository, folders, generated files, and configuration files may Roo Code inspect?
- Edit access: Which files may it create, modify, or delete?
- Command access: Which exact command families are acceptable, and which arguments make them unsafe?
- External access: Can browser actions reach authenticated pages, upload data, or trigger transactions?
- MCP access: Which server and individual tools may run, with which inputs and credentials?
Keep these actions manual by default:
- Reading environment files, private keys, token stores, and secret managers.
- Writing system directories, editor settings, CI credentials, or agent configuration.
- Publishing packages, deploying infrastructure, merging code, or changing production services.
- Running recursive deletion, disk-formatting, permission-changing, or credential-management commands.
- Calling MCP tools that write data, send messages, create tickets, alter cloud resources, or access sensitive records.
Roo Code’s tool documentation groups file changes, command execution, and MCP operations as distinct capabilities. Its custom modes can also define access to broad tool groups such as read, edit, command, and mcp. That separation is useful, but it is not a substitute for testing the actual files, commands, and servers in your workspace. Review the official tool-use overview before relying on a mode configuration.
Important: A sandbox or remote host limits the blast radius. It does not prove that the agent will make the right decision, that a repository is trusted, or that a secret cannot be exposed through logs, prompts, files, or external tools.
First step: approve reading before changing anything
Create a test branch or disposable clone of the target repository. Do not begin on a branch that contains uncommitted work, production credentials, or deployment configuration that cannot be recreated.
Enable only read-oriented actions and test a small task such as:
- List the repository tree.
- Search for a known function.
- Read the project instructions.
- Identify the test command without running it.
- Summarize the dependency and build files.
Then check the following:
- Workspace scope: Confirm the visible root is the intended repository rather than a parent directory containing multiple projects.
- Link behavior: Test symbolic links and mounted folders. A path that appears inside the workspace may point outside it.
- Sensitive-file visibility: Check whether Roo Code can discover
.envfiles, SSH directories, cloud configuration, editor settings, or cached credentials. - Instruction contamination: Review repository instruction files, generated documentation, and issue text for prompts that attempt to change approval behavior.
- Evidence capture: Save the permission screenshot, the task transcript, and a record of every file Roo Code attempted to access.
The pass condition is not “Roo Code answered correctly.” The pass condition is that it stayed within the intended repository and did not inspect sensitive paths. If it crosses the boundary, stop the rollout and fix the workspace or operating-system permissions before enabling edits.
The first stage deserves a high score only when the scope is observable and repeatable:
- Read-only access inside a disposable repository: 5/5.
- Read-only access with unclear symlink or mount behavior: 2/5.
- Read access to a home directory, shared workspace, or credential-bearing profile: 0/5.
Second step: add limited edits with a recovery proof
File editing is more useful than reading, but it introduces a different failure mode: a harmless-looking request can produce a broad diff, modify generated files, overwrite configuration, or change a script that later executes with higher privileges.
Enable limited editing only after the read stage passes. Use a test branch with a clean baseline and ask Roo Code to make a deliberately small change. A suitable test should include one source file, one test file, and an explicit instruction not to touch configuration or generated output.
Verify five points:
- The diff contains only the requested files.
- No secrets, lockfiles, build outputs, or hidden agent settings changed unexpectedly.
- The edit is understandable without relying on the model’s explanation.
- The repository can return to the baseline with
git restore, branch reset, or a known checkpoint. - A deliberately requested out-of-scope edit is rejected or remains subject to manual approval.
Roo Code provides checkpoints for reverting task changes, but you should still test ordinary Git recovery because your operational process cannot depend on one UI feature alone. See the official checkpoint documentation and confirm whether the setting and behavior match the version installed in your environment.
Do not automatically approve writes to the .roo/ directory or other agent configuration until you have reviewed the exact protection behavior. An official security advisory described a high-severity remote-code-execution path involving project MCP configuration, prompt injection, auto-approved file writes, and commands stored in the project configuration. The advisory lists CVSS 8.1, affected versions below 3.20.3, and a fix in 3.20.3. Treat this as a reason to keep agent configuration changes under manual review, not as proof that every later version is risk-free. Read the official security advisory.
Third step: test terminal approval by command family
Roo Code’s terminal approval needs command-level reasoning. A broad rule such as “allow build commands” may still permit a script to invoke network access, delete files, alter permissions, or execute arbitrary lifecycle hooks.
Test representative command groups separately:
- Build: Run the normal build command from the intended working directory.
- Unit tests: Run a focused test command and confirm that failure stops or returns a visible error.
- Dependency installation: Test the package manager command in a disposable workspace. Inspect lifecycle scripts and network behavior.
- Cleanup: Use a harmless temporary directory first. Confirm that the command cannot expand to the repository root or a parent directory.
- Deployment: Keep publishing and infrastructure changes manual, even when the command is familiar.
For every candidate command, record:
- The exact command prefix.
- Accepted arguments.
- The working directory.
- Environment variables available to the process.
- Network destinations.
- Files created, modified, or removed.
- Behavior after a failed or interrupted run.
The main risk is not only the command name. Shell operators, substitutions, wildcards, pipelines, relative paths, wrapper scripts, and environment variables can enlarge its effect. A command that is predictable, idempotent, scoped to a disposable directory, and easy to reverse is a candidate for automation. A command that changes external state, consumes credentials, or has irreversible effects should remain manual.
Roo Code documents an auto-approved request limit that can pause a task after a configured number of consecutive API calls. Its documentation gives five requests as an example and also describes an unlimited option. Use a finite limit for unattended trials so a reasoning loop or repeated failure cannot continue indefinitely. Check the official rate-limit and cost guidance.
Fourth step: separate MCP server trust from tool trust
MCP changes the approval problem because the agent may gain access to external data, APIs, files, or actions. A server can be maintained by a trusted team while still exposing tools that are too powerful for automatic execution.
Build an allowlist with one row per tool. For each row, document:
- Server name and configuration scope.
- Tool name and purpose.
- Read, write, external-action, or sensitive-resource classification.
- Required input fields and maximum useful scope.
- Credential source and token lifetime.
- Network destination.
- Expected output and logging behavior.
- Disable procedure and credential-revocation procedure.
- Manual approval requirement.
Start with read-only tools that return bounded data. Then test a rejected call using an out-of-scope identifier, an unexpected path, and an invalid resource name. The tool should fail safely without revealing credentials or silently falling back to a broader operation.
Do not assume that enabling the global MCP category is equivalent to approving one safe function. Roo Code’s documented MCP group includes both use_mcp_tool and access_mcp_resource, while tool availability also depends on the active mode and configuration. Review the official MCP tool descriptions.
If you do not use MCP for a task, disable it for that mode or session. Roo Code’s own cost guidance notes that disabling unused MCP features can reduce system-prompt size. More importantly, removing unused tools reduces the number of capabilities that a prompt injection or mistaken instruction can attempt to reach. See the official MCP-related cost guidance.
FAQ: the decisions that usually block rollout
Which Roo Code operations can you approve automatically?
Read-only repository inspection is the safest starting point. Limited edits can be approved when the repository is disposable, the branch is clean, file scope is constrained, and Git recovery has been proven. Terminal commands and MCP calls need narrower rules because their effects may extend beyond the visible task. Keep secrets, deployment actions, destructive commands, and sensitive external operations manual.
What risks come with automatic terminal execution?
The agent may run a wrapper script rather than the simple command you expected. Shell expansion, chained commands, package lifecycle hooks, environment variables, and a wrong working directory can enlarge the impact. Test build, test, install, and cleanup commands independently. Approve prefixes only when their arguments, network access, and failure behavior are understood.
How do you configure a Roo Code MCP allowlist?
Review the global and project MCP configuration separately, then inspect every server and tool that becomes available in the selected mode. Allow only the tools required for the task. Record input restrictions, credential sources, external effects, and revocation steps. If the interface offers a server-wide approval choice, do not use it as a replacement for individual tool review.
Is isolation required for unattended Roo Code?
Use isolation whenever Roo Code can continue without an operator approving each action. A separate account, disposable repository, restricted network, short-lived credentials, timeout, and preserved logs provide stronger protection than a shared developer workstation. A remote Mac still needs its own review because Xcode, signing tools, keychains, local services, and macOS permissions are not equivalent to a generic container.
Fifth step: perform a remote trial with two opposing tasks
A remote development environment should pass both a normal task and a deliberate boundary test. Run these only in a disposable workspace with credentials that can be revoked.
Task A: the reversible task
Ask Roo Code to update a small source file, run a focused test, and produce a diff. Confirm that:
- The task starts in the intended workspace.
- Only expected files change.
- The test command uses the expected runtime.
- Logs contain enough detail to reconstruct the actions.
- The change can be reverted without manual repair.
- The task stops at its request limit or timeout.
Task B: the denied task
Ask it to read a protected file, edit an agent configuration file, invoke a blocked MCP tool, access a parent directory, or run a prohibited deployment command. The exact test should match your threat model. Confirm that the action is denied, paused for approval, or logged as a policy violation.
Review the remote host separately from Roo Code:
- Operating-system account privileges.
- Workspace mounts and shared volumes.
- Network egress and DNS access.
- SSH keys, keychains, signing identities, and cloud credentials.
- Log retention and redaction.
- Process termination after timeout.
- Snapshot or Git recovery.
- Access for other team members.
If the workflow depends on Xcode or macOS-only tooling, validate the remote Mac directly. A container test cannot establish how keychains, code signing, simulator services, launch agents, or macOS privacy controls behave on the actual host.
For guidance on the broader remote operating model, you can also review SSHMac’s help center before choosing between a local machine, a shared remote host, or an isolated Mac environment.
Long-term review: permissions expire when the system changes
An approval policy is valid only for the environment it was tested against. Reopen the checklist when any of these events occur:
- Roo Code is upgraded or its interface changes.
- An MCP server is added, replaced, or reconfigured.
- A repository script, package manifest, or CI workflow changes.
- A new secret, token, signing identity, or cloud role is injected.
- The workspace path or remote host changes.
- A task begins running unattended.
- A previously read-only tool gains a write or external-action capability.
Use this decision rule:
- Keep the approval: The scope is unchanged, the logs are complete, the denied-task test still blocks, and rollback remains reliable.
- Shrink the approval: The task now touches more files, needs broader network access, or depends on a new script whose behavior has not been reviewed.
- Revoke the approval: A credential changed, an MCP server changed ownership or configuration, a command became non-reversible, logs are incomplete, or a boundary test was bypassed.
Review a sample of command logs and diffs after real tasks. Do not rely only on successful completion messages. A successful task can still have modified the wrong file, exposed a secret in output, or used a broader tool than intended.
The acceptance matrix to use before rollout
Use the following scorecard at the end of each stage. A stage should not move forward because the score “feels acceptable.” It should move forward only when the required evidence exists and the stop condition is clear.
| Stage | Automatic approval scope | Required evidence | Stop condition | Suggested score |
|---|---|---|---|---|
| Read | Repository listing, search, and bounded file reads | Permission view, access transcript, sensitive-path test | Workspace escape or secret discovery | 5/5 |
| Edit | Small, reversible source changes | Clean diff, rejected out-of-scope edit, Git recovery | Unexpected file or agent-config change | 4/5 |
| Command | Tested build and unit-test prefixes | Exact command log, argument review, failure test | Broad script, destructive path, or hidden network effect | 4/5 |
| Browser | Read-only pages in a test account | URL scope, output review, no external side effect | Upload, transaction, authenticated write, or unbounded navigation | 3/5 |
| MCP | Individual read-only tools with bounded inputs | Tool inventory, credential map, denied-call record | Unreviewed write tool or sensitive resource access | 3/5 |
| Unattended remote task | Previously approved actions in an isolated host | Rollback, timeout, logs, network and credential checks | Missing kill path, incomplete logs, or failed boundary test | 5/5 |
Do not convert a failed stage into a passing stage by widening the permission. Fix the environment, narrow the scope, or return to manual approval.
The practical choice: local workstation, remote Mac, or SSHMac
A local workstation is convenient for interactive development, but it usually contains personal credentials, broad filesystem access, editor state, and unrelated repositories. A shared remote host can separate work from your laptop, yet it introduces multi-user exposure, credential lifecycle work, and possible contention. Generic containers provide useful isolation but may not reproduce macOS tools, Xcode behavior, signing, or keychain access.
For short-lived experiments, CI-like tasks, or a temporary remote development environment, renting a dedicated Mac through SSHMac’s Mac access options can be easier to control than granting a persistent agent access to your daily machine. The important advantage is not that a remote Mac makes Roo Code safe by itself. The advantage is that you can create a separate workspace, use disposable credentials, capture logs, and destroy or reset the environment after the trial.
If you need a continuously running production build system, physical peripherals, stable long-term ownership, or hardware-level integration, buying and managing your own Mac may be the better choice. If you need temporary capacity to validate Roo Code automation, test an MCP workflow, or reproduce a macOS toolchain issue, an isolated SSHMac environment can reduce the cost of exposing your primary workstation.
Run one low-risk task first. Expand automatic approval only after the diff, denied action, rollback, timeout, and logs all pass.