Agent Configuration
Per-agent model selection, heartbeat schedules, tool policies, and config inheritance.
Agent Configuration
Every agent has a configuration entry in reeve.json that controls its model, heartbeat, tools, sandbox, subagent permissions, and more. Configuration inherits from role defaults and can be overridden per-agent.
Config Structure
An agent entry in reeve.json:
{
"agents": {
"defaults": {
"model": "claude-sonnet-4-6",
"heartbeat": { "every": "2h" },
"sandbox": { "enabled": true }
},
"list": [
{
"id": "marketing-manager",
"name": "Marketing Manager",
"role": "manager",
"workspace": "/path/to/workspace",
"agentDir": "/path/to/agent-dir",
"model": "claude-opus-4-6",
"heartbeat": { "every": "30m" },
"identity": {
"name": "Marketing Manager",
"emoji": "📊",
"theme": "purple"
},
"subagents": {
"allowAgents": ["pipeline-manager", "marketing-manager"]
},
"tools": {
"disabled": ["exec"]
},
"sessionReset": {
"idleMinutes": 2880
}
}
]
}
}Config Resolution Order
Agent configuration is resolved in this order (later wins):
- Role defaults — From
config/role-defaults.jsbased on the agent's role - Agent defaults — From
agents.defaultsinreeve.json - Agent entry — From the specific agent in
agents.list - Config layers — Universal → org → individual → workspace (see Config Layers)
Key Configuration Fields
Model
Which LLM powers the agent:
{
"model": "claude-opus-4-6"
}Available models depend on your configured providers.
Heartbeat
How often the agent checks in autonomously:
{
"heartbeat": {
"every": "2h"
}
}Set to null to disable heartbeats (common for workers that only respond when invoked).
Subagent Policy
Which agents this agent can spawn:
{
"subagents": {
"allowAgents": ["pipeline-manager", "worker-1", "worker-2"]
}
}Special values:
["*"]— Can spawn any agent (coordinators)["<self>"]— Can only spawn itself (workers, assistants)["pipeline-manager", "<self>"]— Can spawn pipeline-manager and itself (managers)
Session Reset
When to reset the agent's conversation context:
{
"sessionReset": {
"idleMinutes": 60
}
}| Role | Default | Meaning |
|---|---|---|
| Coordinator | null (never) | Always-on context |
| Manager | 2880 (48h) | Reset after 2 days idle |
| Worker | 60 (1h) | Quick reset for task focus |
| Research | 1440 (24h) | Reset after 1 day idle |
| Assistant | 2880 (48h) | Persistent conversation |
Tool Policies
Disable or restrict specific tools:
{
"tools": {
"disabled": ["exec", "browser"],
"readonly": true
}
}Sandbox
Restrict file system and command execution:
{
"sandbox": {
"enabled": true,
"allowedPaths": ["/path/to/workspace"],
"blockedCommands": ["rm -rf", "sudo"]
}
}Modifying Agent Config
Via CLI
# Set identity
reeve agents set-identity marketing-manager --name "MarketBot" --emoji "🚀"
# Inspect current config
reeve agents inspect marketing-managerVia JSON-RPC
// Update agent config
agents.update({
agentId: "marketing-manager",
config: {
model: "claude-opus-4-6",
heartbeat: { every: "1h" }
}
})Direct reeve.json editing
For complex config changes, edit reeve.json directly. Changes take effect on next gateway restart or config reload.
The config system uses 4-layer inheritance. Agent config in reeve.json is the workspace layer — it has the highest priority and overrides all other layers.