Slash Commands, Directives, and Inline Shortcuts Reference
This page lists all available slash commands, directives, and inline shortcuts for the Gateway. It covers configuration, routing, and per-surface behavior for developers and system administrators.
Read this when
- Using or configuring chat commands
- Debugging command routing or permissions
- Understanding how skill commands are registered
The Gateway processes commands sent as standalone messages that begin with /. Host-only bash commands use ! <cmd>, with /bash <cmd> as a shorthand alias.
When a conversation is linked to an ACP session, regular text goes to the ACP harness. Gateway management commands stay local: /acp ... always reaches the OpenClaw command handler, and /status plus /unfocus remain local when command handling is enabled for the surface.
Three command types
-
Commands, Standalone
/...messages handled by the Gateway. Must be the only content in the message. -
Directives,
/think,/fast,/verbose,/trace,/reasoning,/elevated,/exec,/model,/queue, removed from the message before the model sees it. When sent alone, they persist session settings; when sent with other text, they act as inline hints. -
Inline shortcuts,
/help,/commands,/status,/whoami, execute immediately and are removed before the model sees the remaining text. Only authorized senders can use them.
Directive behavior details
- Directives are stripped from the message before the model sees it.
- In directive-only messages (the message contains only directives), they persist to the session and reply with an acknowledgement.
- In normal chat messages that include other text, they act as inline hints and do not persist session settings.
- Directives only apply for authorized senders. If
commands.allowFromis set, it is the only allowlist used; otherwise authorization comes from channel allowlists, pairing, and always-on access-group enforcement. Unauthorized senders see directives treated as plain text.
Configuration
{
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.text(boolean, default: true), Enables parsing/...in chat messages. On surfaces without native commands (WhatsApp, WebChat, Signal, iMessage, Google Chat, Microsoft Teams), text commands work even when set tofalse. -
commands.native(boolean | "auto", default: auto), Registers native commands. Auto: on for Discord/Telegram; off for Slack; ignored for providers without native support. Override per-channel withchannels.<provider>.commands.native. On Discord,falseskips slash-command registration; previously registered commands may stay visible until removed. -
commands.nativeSkills(boolean | "auto", default: auto), Registers skill commands natively when supported. Auto: on for Discord/Telegram; off for Slack. Override withchannels.<provider>.commands.nativeSkills. -
commands.bash(boolean, default: false), Enables! <cmd>to run host shell commands (/bash <cmd>alias). Requirestools.elevatedallowlists. -
commands.bashForegroundMs(number, default: 2000), How long bash waits before switching to background mode (0backgrounds immediately). -
commands.config(boolean, default: false), Enables/config(reads/writesopenclaw.json). Owner-only. -
commands.mcp(boolean, default: false), Enables/mcp(reads/writes OpenClaw-managed MCP config undermcp.servers). Owner-only. -
commands.plugins(boolean, default: false), Enables/plugins(plugin discovery/status plus install + enable/disable). Owner-only for writes. -
commands.debug(boolean, default: false), Enables/debug(runtime-only config overrides). Owner-only. -
commands.restart(boolean, default: true), Enables/restartand externalSIGUSR1restart requests. -
commands.ownerAllowFrom(string[]), Explicit owner allowlist for owner-only command surfaces. Separate fromcommands.allowFromand DM pairing access. -
true, .commands.enforceOwnerForCommands" type="boolean" default="false"> Per-channel: requires owner identity for owner-only commands. Whentrue, sender must matchcommands.ownerAllowFromor hold internaloperator.adminscope. A wildcardallowFromentry is not sufficient. -
commands.ownerDisplay(raw" | "hash), Controls how owner ids appear in the system prompt. -
commands.ownerDisplaySecret(string), HMAC secret used whencommands.ownerDisplay: "hash". -
commands.allowFrom(object), Per-provider allowlist for command authorization. When configured, it is the only authorization source for commands and directives. Use"*"for a global default; provider-specific keys override it.
Command list
Commands come from three sources:
- Core built-ins:
src/auto-reply/commands-registry.shared.ts - Generated dock commands:
src/auto-reply/commands-registry.data.ts - Plugin commands: plugin
registerCommand()calls
Availability depends on config flags, channel surface, and installed/enabled plugins.
Core commands
Sessions and runs
| Command | Description |
|---|---|
/new [model] | Archive the current session and start a fresh one |
/reset [soft [message]] | Reset the current session in place. soft keeps the transcript, drops reused CLI backend session ids, and reruns startup |
/name <title> | Name or rename the current session. Omit the title to see the current name and a suggestion |
/compact [instructions] | Compact the session context. See Compaction |
/stop | Abort the current run |
/session idle <duration|off> | Manage thread-binding idle expiry |
/session max-age <duration|off> | Manage thread-binding max-age expiry |
/export-session [path] | Owner-only. Export the current session to HTML inside the workspace. Alias: /export |
/export-trajectory [path] | Export a JSONL trajectory bundle for the current session. Alias: /trajectory |
Explicit /export-session paths replace existing files inside the workspace. Omit the path to generate a collision-safe filename.
Note
Control UI intercepts typed
/newto create and switch to a fresh dashboard session, except whensession.dmScope: "main"is configured and the current parent is the agent's main session, in that case/newresets the main session in place. Typed/resetstill runs the Gateway's in-place reset. Use/model defaultwhen you want to clear a pinned session model selection.
Model and run controls
| Command | Description |
|---|---|
/think <level|default> | Set the thinking level or clear the session override. Aliases: /thinking, /t |
/verbose on|off|full | Toggle verbose output. Alias: /v |
/trace on|off | Toggle plugin trace output for the current session |
/fast [status|auto|on|off|default] | Show, set, or clear fast mode |
/reasoning [on|off|stream] | Toggle reasoning visibility. Alias: /reason |
/elevated [on|off|ask|full] | Toggle elevated mode. Alias: /elev |
/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id> | Show or set exec defaults |
/login [codex|openai|openai-codex] | Pair Codex/OpenAI login from a private chat or Web UI session. Owner/admin only |
/model [name|#|status] | Show or set the model |
/models [provider] [page] [limit=<n>|all] | List configured/auth-available providers or models |
/queue <mode> | Manage active-run queue behavior. See Queue and Queue steering |
/steer <message> | Inject guidance into the active run. Alias: /tell. See Steer |
verbose / trace / fast / reasoning safety
/verboseis for debugging, keep it off in normal use./tracereveals only plugin-owned trace/debug lines; normal verbose chatter stays off./fast auto|on|offpersists a session override; use the Sessions UIinheritoption to clear it./fastis provider-specific: OpenAI/Codex map it toservice_tier=priority; direct Anthropic requests map it toservice_tier=autoorstandard_only./reasoning,/verbose, and/traceare risky in group settings, they may reveal internal reasoning or plugin diagnostics. Keep them off in group chats.
Model switching details
/modelpersists 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.
Discovery and status
| Command | Description |
|---|---|
/help | Show the short help summary |
/commands | Show the generated command catalog |
/tools [compact|verbose] | Show what the current agent can use right now |
/status | Show execution/runtime status, Gateway and system uptime, plugin health, plus provider usage/quota |
/status plugins | Show detailed plugin health: load errors, quarantines, channel plugin failures, dependency issues, compatibility notices. Requires commands.plugins: true |
/goal [status|start|edit|pause|resume|complete|block|clear] ... | Manage the current session's durable goal |
/diagnostics [note] | Owner-only support-report flow. Asks for exec approval every time |
/openclaw <request> | Run the OpenClaw setup and repair helper from an owner DM |
/tasks | List active/recent background tasks for the current session |
/context [list|detail|map|json] | Explain how context is assembled |
/whoami | Show your sender id. Alias: /id |
/usage off|tokens|full|reset|cost | Control the per-response usage footer (reset/inherit/clear/default clears the session override to re-inherit the configured default) or print a local cost summary |
Skills, allowlists, approvals
| Command | Description |
|---|---|
/skill <name> [input] | Execute a skill by its name |
/learn [request] | Draft one reviewable skill from the current conversation or named sources via Skill Workshop |
/allowlist [list|add|remove] ... | Manage allowlist entries. Text only |
/approve <id> <decision> | Resolve exec or plugin approval prompts |
/btw <question> | Ask a side question without altering session context. Alias: /side. Refer to BTW |
Subagents and ACP
| Command | Description |
|---|---|
/subagents list|log|info | Inspect sub-agent runs for the current session |
/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help | Manage ACP sessions and runtime options. Runtime controls require an external owner or internal Gateway admin identity |
/focus <target> | Bind the current Discord thread or Telegram topic to a session target |
/unfocus | Remove the current thread binding |
/agents | List thread-bound agents for the current session |
Owner-only writes and admin
| Command | Requires | Description |
|---|---|---|
/config show|get|set|unset | commands.config: true | Read or write openclaw.json. Owner only |
/mcp show|get|set|unset | commands.mcp: true | Read or write OpenClaw managed MCP server config. Owner only |
/plugins list|inspect|show|get|install|enable|disable | commands.plugins: true | Inspect or mutate plugin state. Owner only for writes. Alias: /plugin |
/debug show|set|unset|reset | commands.debug: true | Runtime only config overrides. Owner only |
/restart | commands.restart: true (default) | Restart OpenClaw |
/send on|off|inherit | owner | Set send policy |
Voice, TTS, channel control
| Command | Description |
|---|---|
/tts on|off|status|chat|latest|provider|limit|summary|audio|help | Control TTS. See TTS |
/activation mention|always | Set group activation mode |
/bash <command> | Run a host shell command. Alias: ! <command>. Requires commands.bash: true |
!poll [sessionId] | Check a background bash job |
!stop [sessionId] | Stop a background bash job |
Dock commands
Dock commands switch the active session's reply route to another linked channel. Refer to 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.
Bundled plugin commands
| Command | Description |
|---|---|
/dreaming [on|off|status|help] | Toggle memory dreaming (owner or Gateway admin). See Dreaming |
/pair [qr|status|pending|approve|cleanup|notify] | Manage device pairing. See Pairing |
/phone status|arm ...|disarm | Temporarily arm high risk node commands (camera/screen/computer/writes). See Computer use |
/voice status|list|set <voiceId> | Manage Talk voice config. Discord native name: /talkvoice |
/card ... | Send LINE rich card presets. See LINE |
/codex <action> ... | Bind, steer, and inspect the Codex app server harness (status, threads, resume, model, fast, permissions, compact, review, mcp, skills, and more). See Codex harness |
QQBot only: /bot-ping, /bot-version, /bot-help, /bot-upgrade, /bot-logs
Skill commands
User invocable skills are exposed as slash commands:
/skill <name> [input]always works as the generic entrypoint.- Skills may register as direct commands (e.g.
/prosefor OpenProse). - Native skill command registration is controlled by
commands.nativeSkillsandchannels.<provider>.commands.nativeSkills. - Names are sanitized to
a-z0-9_(max 32 chars); collisions get numeric suffixes.
Skill command dispatch
By default, skill commands route to the model as a normal request.
Skills can declare command-dispatch: tool to route directly to a tool
(deterministic, no model involvement). Example: /prose (OpenProse plugin), see OpenProse.
Native command arguments
Discord uses autocomplete for dynamic options and button menus when required
args are omitted. Telegram and Slack show a button menu for commands with
choices. Dynamic choices resolve against the target session model, so model
specific options like /think levels follow the session's /model override.
/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 default # clear the session model selection
/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.modelPolicy.allow,
including provider/* entries. Without an explicit allowlist, model entries and
aliases do not restrict selection.
/config: on-disk config writes
Note
Owner only. Disabled by default, enable with
commands.config: true.
/config show
/config show channels.whatsapp.responsePrefix
/config get channels.whatsapp.responsePrefix
/config set channels.whatsapp.responsePrefix="[openclaw]"
/config unset channels.whatsapp.responsePrefix
Config is validated before write. Invalid changes are rejected. /config
updates persist across restarts.
/mcp: MCP server config
Note
Owner only. Disabled by default, enable with
commands.mcp: true.
/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.
/mcp show redacts credential bearing fields, recognized credential flag
values, and known secret shaped arguments. When run from a group, the
configuration is sent to the owner privately; if no private owner route is
available, the command fails closed and asks the owner to retry from a direct
chat.
/debug: runtime-only overrides
Note
Owner only. Disabled by default, enable with
commands.debug: true. Overrides apply immediately to new config reads but do not write to disk.
/debug show
/debug set channels.whatsapp.responsePrefix="[openclaw]"
/debug set channels.whatsapp.allowFrom=["+1555","+4477"]
/debug unset channels.whatsapp.responsePrefix
/debug reset
/plugins: plugin management
Note
Owner only for writes. Disabled by default, enable with
commands.plugins: true.
/plugins
/plugins list
/plugin show context7
/plugins enable context7
/plugins disable context7
/plugins install clawhub:<package>
/plugins install npm:@openclaw/<official-package>
/plugins install npm:<package> --force
/plugins install git:<repository>@<ref> --force
/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. Trusted ClawHub
and official catalog installs do not need extra acknowledgement. Arbitrary npm,
git, archive, npm-pack:, and local path sources show a provenance warning and
require a trailing --force after you review the source. This flag acknowledges
the source and permits replacement of an existing install; it does not bypass
security.installPolicy or installer security checks. ClawHub releases with
risk warnings still require the separate shell only
--acknowledge-clawhub-risk flag. Marketplace, linked, and pinned installs also
remain shell only.
/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:
- Uses the current session as background context.
- In Codex harness sessions, runs as an ephemeral Codex side thread.
- Does not change future session context.
- Is not written to transcript history.
See BTW side questions for the full behavior.
Surface notes
Session scoping per surface
- Text commands: run in the normal chat session (DMs share
main, groups have their own session). - Native Discord commands:
agent:<agentId>:discord:slash:<userId> - Native Slack commands:
agent:<agentId>:slack:slash:<userId>(prefix configurable viachannels.slack.slashCommand.sessionPrefix) - Native Telegram commands:
telegram:slash:<userId>(targets the chat session viaCommandTargetSessionKey) /login codexsends device pairing codes only through private chat or Web UI response paths. Telegram group/topic invocations ask the owner to DM the bot instead./stoptargets the active chat session to abort the current run.
Slack specifics
channels.slack.slashCommand supports a single /openclaw style command.
With commands.native: true, create one Slack slash command per built in
command. Register /agentstatus (not /status) because Slack reserves
/status. Text /status still works in Slack messages.
Fast path and inline shortcuts
- Command only messages from allowlisted senders are handled immediately (bypass queue + model).
- Inline shortcuts (
/help,/commands,/status,/whoami) also work embedded in normal messages and are stripped before the model sees the remaining text. - Unauthorized command only messages are silently ignored; inline
/...tokens are treated as plain text.
Argument notes
- Commands accept an optional
:between the command and args (/think: high,/send: on). /new <model>accepts a model alias,provider/model, or a provider name (fuzzy match); if no match, the text is treated as the message body./allowlist add|removerequirescommands.config: trueand honors channelconfigWrites.
Provider usage and status
- Provider usage/quota (e.g., "Claude 80% left") appears in
/statusfor the current model provider when usage tracking is turned on. - Token/cache lines in
/statuscan revert to the most recent transcript usage entry if the live session snapshot lacks detail. - Execution vs runtime:
/statusshowsExecutionfor the effective sandbox path andRuntimefor the session runner:OpenClaw Default,OpenAI Codex, a CLI backend, or an ACP backend. - Per-response tokens/cost: managed by
/usage off|tokens|full. /model statusdeals with models, auth, and endpoints, not usage.
Related
-
Skills, How skill slash commands are registered and controlled with gates.
-
Creating skills, Build a skill that registers its own slash command.
-
BTW, Ask side questions without altering the session context.
-
Steer, Direct the agent mid-run using
/steer.