OpenWalrusOpenWalrus

Permissions

Control which tools each agent can use — allow, ask, or deny per tool, with per-agent overrides.

The permission layer lets you control which tools agents can call. It sits between the agent and tool dispatch — every tool call passes through permission checks before execution.

Three permission levels

LevelBehavior
allowTool executes immediately (default for all tools)
askTool call blocks the task; an inbox item is created for user approval
denyTool call is rejected with an error message

Configuration

Permissions are set in walrus.toml under the [permissions] section:

# Global defaults — apply to all agents
[permissions]
bash = "ask"
write = "deny"

# Per-agent overrides
[permissions.researcher]
bash = "deny"
read = "allow"

Resolution order

When an agent calls a tool, the permission is resolved in this order:

  1. Agent-specific override[permissions.<agent-name>] table
  2. Global default — top-level [permissions] entry
  3. Built-in defaultallow

The first match wins. If no entry exists at any level, the tool is allowed.

How ask works

When a tool has ask permission:

  1. The agent pauses and waits for user approval
  2. An inbox item is created with the tool name and arguments
  3. The user responds with approved or denied
  4. If approved, the tool executes normally; if denied, the agent receives an error

The ask permission only works within a task context. In a direct REPL session (no task), ask falls back to allow.

What's next

On this page