openclaw agents
Manage isolated agents (workspaces + auth + routing).
Related:
- Multi-agent routing: Multi-Agent Routing
- Agent workspace: Agent workspace
- Skill visibility config: Skills config
Examples
Routing bindings
Use routing bindings to pin inbound channel traffic to a specific agent. If you also want different visible skills per agent, configureagents.defaults.skills and agents.list[].skills in openclaw.json. See
Skills config and
Configuration Reference.
List bindings:
accountId (--bind <channel>), OpenClaw resolves it from channel defaults and plugin setup hooks when available.
If you omit --agent for bind or unbind, OpenClaw targets the current default agent.
Binding scope behavior
- A binding without
accountIdmatches the channel default account only. accountId: "*"is the channel-wide fallback (all accounts) and is less specific than an explicit account binding.- If the same agent already has a matching channel binding without
accountId, and you later bind with an explicit or resolvedaccountId, OpenClaw upgrades that existing binding in place instead of adding a duplicate.
telegram:ops. If you also want default-account routing, add it explicitly (for example --bind telegram:default).
Remove bindings:
unbind accepts either --all or one or more --bind values, not both.
Command surface
agents
Running openclaw agents with no subcommand is equivalent to openclaw agents list.
agents list
Options:
--json--bindings: include full routing rules, not only per-agent counts/summaries
agents add [name]
Options:
--workspace <dir>--model <id>--agent-dir <dir>--bind <channel[:accountId]>(repeatable)--non-interactive--json
- Passing any explicit add flags switches the command into the non-interactive path.
- Non-interactive mode requires both an agent name and
--workspace. mainis reserved and cannot be used as the new agent id.
agents bindings
Options:
--agent <id>--json
agents bind
Options:
--agent <id>(defaults to the current default agent)--bind <channel[:accountId]>(repeatable)--json
agents unbind
Options:
--agent <id>(defaults to the current default agent)--bind <channel[:accountId]>(repeatable)--all--json
agents delete <id>
Options:
--force--json
maincannot be deleted.- Without
--force, interactive confirmation is required. - Workspace, agent state, and session transcript directories are moved to Trash, not hard-deleted.
Identity files
Each agent workspace can include anIDENTITY.md at the workspace root:
- Example path:
~/.openclaw/workspace/IDENTITY.md set-identity --from-identityreads from the workspace root (or an explicit--identity-file)
Set identity
set-identity writes fields into agents.list[].identity:
namethemeemojiavatar(workspace-relative path, http(s) URL, or data URI)
--agent <id>--workspace <dir>--identity-file <path>--from-identity--name <name>--theme <theme>--emoji <emoji>--avatar <value>--json
--agentor--workspacecan be used to select the target agent.- If you rely on
--workspaceand multiple agents share that workspace, the command fails and asks you to pass--agent. - When no explicit identity fields are provided, the command reads identity data from
IDENTITY.md.
IDENTITY.md: