Skip to content
Sign up
Features

Permissions

Control what tools your agent can use

By default, Letta Code operates with human-in-the-loop. Every tool call requires your approval before execution. This keeps you in control while the agent works.

You can adjust how much approval is required:

ModeBehavior
defaultPrompt for approval on every tool call
acceptEditsAuto-allow file edits, prompt for others
planRead-only mode, no file modifications
bypassPermissions (yolo)Auto-allow tool calls except ExitPlanMode, which still requires manual approval
Auto-allow edits
letta -p "Fix the type errors" --permission-mode acceptEdits
Read-only analysis
letta -p "Review this codebase" --permission-mode plan
Bypass all prompts
letta -p "Run the full test suite and fix failures" --yolo

The --yolo flag is shorthand for --permission-mode bypassPermissions. ExitPlanMode still requires manual approval so you can explicitly approve or reject the plan.

In letta server, permission mode is tracked per conversation and restored after server restarts.

Control permissions for specific tool invocations:

Allow specific commands
letta --allowedTools "Bash(npm run lint),Bash(npm run test)"
Block dangerous patterns
letta --disallowedTools "Bash(rm -rf:*)"

Set rules in .letta/settings.json that apply every session:

.letta/settings.json
{
"permissions": {
"allow": [
"Bash(pnpm lint)",
"Bash(pnpm test)",
"Read(src/**)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(git push --force:*)",
"Read(.env)"
]
}
}
PatternMatches
ToolNameAll uses of a tool
ToolName(pattern)Specific arguments
**Wildcard for paths
:*Wildcard for command arguments

Separately from permissions, you can control which tools are loaded at all using --tools:

Only load read-only tools
letta -p "Analyze this code" --tools "Read,Glob,Grep"
No tools (conversation only)
letta -p "Explain this concept" --tools ""

This removes tools from the agent’s context entirely, not just permission-gating them.