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.allowFrom is 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 to false.

  • 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 with channels.<provider>.commands.native. On Discord, false skips 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 with channels.<provider>.commands.nativeSkills.

  • commands.bash (boolean, default: false), Enables ! <cmd> to run host shell commands (/bash <cmd> alias). Requires tools.elevated allowlists.

  • commands.bashForegroundMs (number, default: 2000), How long bash waits before switching to background mode (0 backgrounds immediately).

  • commands.config (boolean, default: false), Enables /config (reads/writes openclaw.json). Owner-only.

  • commands.mcp (boolean, default: false), Enables /mcp (reads/writes OpenClaw-managed MCP config under mcp.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 /restart and external SIGUSR1 restart requests.

  • commands.ownerAllowFrom (string[]), Explicit owner allowlist for owner-only command surfaces. Separate from commands.allowFrom and DM pairing access.

  • true, .commands.enforceOwnerForCommands" type="boolean" default="false"> Per-channel: requires owner identity for owner-only commands. When true, sender must match commands.ownerAllowFrom or hold internal operator.admin scope. A wildcard allowFrom entry is not sufficient.

  • commands.ownerDisplay (raw" | "hash), Controls how owner ids appear in the system prompt.

  • commands.ownerDisplaySecret (string), HMAC secret used when commands.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

CommandDescription
/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
/stopAbort 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 /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. Use /model default when you want to clear a pinned session model selection.

Model and run controls

CommandDescription
/think <level|default>Set the thinking level or clear the session override. Aliases: /thinking, /t
/verbose on|off|fullToggle verbose output. Alias: /v
/trace on|offToggle 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

  • /verbose is for debugging, keep it off in normal use.
  • /trace reveals only plugin-owned trace/debug lines; normal verbose chatter stays off.
  • /fast auto|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.

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.

Discovery and status

CommandDescription
/helpShow the short help summary
/commandsShow the generated command catalog
/tools [compact|verbose]Show what the current agent can use right now
/statusShow execution/runtime status, Gateway and system uptime, plugin health, plus provider usage/quota
/status pluginsShow 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
/tasksList active/recent background tasks for the current session
/context [list|detail|map|json]Explain how context is assembled
/whoamiShow your sender id. Alias: /id
/usage off|tokens|full|reset|costControl 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

CommandDescription
/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

CommandDescription
/subagents list|log|infoInspect 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|helpManage 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
/unfocusRemove the current thread binding
/agentsList thread-bound agents for the current session

Owner-only writes and admin

CommandRequiresDescription
/config show|get|set|unsetcommands.config: trueRead or write openclaw.json. Owner only
/mcp show|get|set|unsetcommands.mcp: trueRead or write OpenClaw managed MCP server config. Owner only
/plugins list|inspect|show|get|install|enable|disablecommands.plugins: trueInspect or mutate plugin state. Owner only for writes. Alias: /plugin
/debug show|set|unset|resetcommands.debug: trueRuntime only config overrides. Owner only
/restartcommands.restart: true (default)Restart OpenClaw
/send on|off|inheritownerSet send policy

Voice, TTS, channel control

CommandDescription
/tts on|off|status|chat|latest|provider|limit|summary|audio|helpControl TTS. See TTS
/activation mention|alwaysSet 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

CommandDescription
/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 ...|disarmTemporarily 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. /prose for OpenProse).
  • Native skill command registration is controlled by commands.nativeSkills and channels.<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 via channels.slack.slashCommand.sessionPrefix)
  • Native Telegram commands: telegram:slash:<userId> (targets the chat session via CommandTargetSessionKey)
  • /login codex sends device pairing codes only through private chat or Web UI response paths. Telegram group/topic invocations ask the owner to DM the bot instead.
  • /stop targets 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|remove requires commands.config: true and honors channel configWrites.

Provider usage and status

  • Provider usage/quota (e.g., "Claude 80% left") appears in /status for the current model provider when usage tracking is turned on.
  • Token/cache lines in /status can revert to the most recent transcript usage entry if the live session snapshot lacks detail.
  • Execution vs runtime: /status shows Execution for the effective sandbox path and Runtime for 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 status deals with models, auth, and endpoints, not usage.
  • 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.