docs/tools/slash-commands.md
The Gateway handles commands sent as standalone messages starting with /.
Host-only bash commands use ! <cmd> (with /bash <cmd> as an alias).
When a conversation is bound to an ACP session, normal text routes to the ACP
harness. Gateway management commands remain local: /acp ... always reaches
the OpenClaw command handler, and /status plus /unfocus stay local whenever
command handling is enabled for the surface.
{
commands: {
native: "auto",
nativeSkills: "auto",
text: true,
bash: false,
bashForegroundMs: 2000,
config: false,
mcp: false,
plugins: false,
debug: false,
restart: true,
ownerAllowFrom: ["discord:123456789012345678"],
ownerDisplay: "raw",
ownerDisplaySecret: "${OWNER_ID_HASH_SECRET}",
allowFrom: {
"*": ["user1"],
discord: ["user:123"],
},
useAccessGroups: true,
},
}
Commands come from three sources:
src/auto-reply/commands-registry.shared.tssrc/auto-reply/commands-registry.data.tsregisterCommand() callsAvailability depends on config flags, channel surface, and installed/enabled plugins.
<Note>
Control UI intercepts typed `/new` to create and switch to a fresh
dashboard session, except when `session.dmScope: "main"` is configured
and the current parent is the agent's main session — in that case `/new`
resets the main session in place. Typed `/reset` still runs the Gateway's
in-place reset.
</Note>
<AccordionGroup>
<Accordion title="verbose / trace / fast / reasoning safety">
- `/verbose` is for debugging — keep it **off** in normal use.
- `/trace` reveals only plugin-owned trace/debug lines; normal verbose chatter stays off.
- `/fast on|off` persists a session override; use the Sessions UI `inherit` option to clear it.
- `/fast` is provider-specific: OpenAI/Codex map it to `service_tier=priority`; direct Anthropic requests map it to `service_tier=auto` or `standard_only`.
- `/reasoning`, `/verbose`, and `/trace` are risky in group settings — they may reveal internal reasoning or plugin diagnostics. Keep them off in group chats.
</Accordion>
<Accordion title="Model switching details">
- `/model` persists the new model immediately to the session.
- If the agent is idle, the next run uses it right away.
- If a run is active, the switch is marked pending and applied at the next clean retry point.
</Accordion>
</AccordionGroup>
Dock commands switch the active session's reply route to another linked channel. See Channel docking for setup and troubleshooting.
Generated from channel plugins with native-command support:
/dock-discord (alias: /dock_discord)/dock-mattermost (alias: /dock_mattermost)/dock-slack (alias: /dock_slack)/dock-telegram (alias: /dock_telegram)Dock commands require session.identityLinks. The source sender and target peer
must be in the same identity group.
| Command | Description |
|---|---|
/dreaming [on|off|status|help] | Toggle memory dreaming. See Dreaming |
/pair [qr|status|pending|approve|cleanup|notify] | Manage device pairing. See Pairing |
/phone status|arm ...|disarm | Temporarily arm high-risk phone node commands |
/voice status|list|set <voiceId> | Manage Talk voice config. Discord native name: /talkvoice |
/card ... | Send LINE rich card presets. See LINE |
/codex status|models|threads|resume|compact|review|diagnostics|account|mcp|skills | Control the Codex app-server harness. See Codex harness |
QQBot-only: /bot-ping, /bot-version, /bot-help, /bot-upgrade, /bot-logs
User-invocable skills are exposed as slash commands:
/skill <name> [input] always works as the generic entrypoint./prose for OpenProse).commands.nativeSkills and
channels.<provider>.commands.nativeSkills.a-z0-9_ (max 32 chars); collisions get numeric suffixes.Skills can declare `command-dispatch: tool` to route directly to a tool
(deterministic, no model involvement). Example: `/prose` (OpenProse plugin)
— see [OpenProse](/prose).
/tools — what the agent can use now/tools answers a runtime question: what this agent can use right now in this
conversation — not a static config catalog.
/tools # compact view
/tools verbose # with short descriptions
Results are session-scoped. Changing agent, channel, thread, sender authorization, or model can change the output. For profile and override editing, use the Control UI Tools panel or config surfaces.
/model — model selection/model # show model picker
/model list # same
/model 3 # select by number from picker
/model openai/gpt-5.4
/model opus@anthropic:default
/model status # detailed view with endpoint and API mode
On Discord, /model and /models open an interactive picker with provider and
model dropdowns. The picker respects agents.defaults.models, including
provider/* entries.
/config — on-disk config writes/config show
/config show messages.responsePrefix
/config get messages.responsePrefix
/config set messages.responsePrefix="[openclaw]"
/config unset messages.responsePrefix
Config is validated before write. Invalid changes are rejected. /config
updates persist across restarts.
/mcp — MCP server config/mcp show
/mcp show context7
/mcp set context7={"command":"uvx","args":["context7-mcp"]}
/mcp unset context7
/mcp stores config in OpenClaw config, not embedded-agent project settings.
/debug — runtime-only overrides/debug show
/debug set messages.responsePrefix="[openclaw]"
/debug set channels.whatsapp.allowFrom=["+1555","+4477"]
/debug unset messages.responsePrefix
/debug reset
/plugins — plugin management/plugins
/plugins list
/plugin show context7
/plugins enable context7
/plugins disable context7
/plugins install ./path/to/plugin
/plugins enable|disable updates plugin config and hot-reloads the Gateway
plugin runtime for new agent turns. /plugins install restarts managed
Gateways automatically because plugin source modules changed.
/trace — plugin trace output/trace # show current trace state
/trace on
/trace off
/trace reveals session-scoped plugin trace/debug lines without full verbose
mode. It does not replace /debug (runtime overrides) or /verbose (normal
tool output).
/btw — side questions/btw is a quick side question about the current session context. Alias: /side.
/btw what are we doing right now?
/side what changed while the main run continued?
Unlike a normal message:
See BTW side questions for the full behavior.
/status for the current model provider when usage tracking is enabled./status can fall back to the latest transcript usage entry when the live session snapshot is sparse./status reports Execution for the effective sandbox path and Runtime for who is running the session: OpenClaw Default, OpenAI Codex, a CLI backend, or an ACP backend./usage off|tokens|full./model status is about models/auth/endpoints, not usage.