OpenClawSkills
GitHub
Tools & Skills • TutorialHeader.readTime

Slash Commands

Slash commands: text vs native, config, and supported commands

Commands are handled by the Gateway. Most commands must be sent as a ''standalone'' message that starts with ''/''.

The host-only bash chat command uses ''! <cmd>'' (with ''/bash <cmd>'' as an alias).

There are two related systems:

- ''Commands'': standalone ''/...'' messages.

- ''Directives'': ''/think'', ''/verbose'', ''/reasoning'', ''/elevated'', ''/exec'', ''/model'', ''/queue''.

- Directives are stripped from the message before the model sees it.

- In normal chat messages (not directive-only), they are treated as "inline hints" and do not persist session settings.

- In directive-only messages (the message contains only directives), they persist to the session and reply with an acknowledgement.

- Directives are only applied for ''authorized senders'' (channel allowlists/pairing plus ''commands.useAccessGroups'').

Unauthorized senders see directives treated as plain text.

There are also a few ''inline shortcuts'' (allowlisted/authorized senders only): ''/help'', ''/commands'', ''/status'', ''/whoami'' (''/id'').

They run immediately, are stripped before the model sees the message, and the remaining text continues through the normal flow.

Tutorial.step

Config

Json5
'{'
  commands: '{'
    native: "auto",
    nativeSkills: "auto",
    text: true,
    bash: false,
    bashForegroundMs: 2000,
    config: false,
    debug: false,
    restart: false,
    useAccessGroups: true,
  '}',
'}'

- ''commands.text'' (default ''true'') enables parsing ''/...'' in chat messages.

- On surfaces without native commands (WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams), text commands still work even if you set this to ''false''.

- ''commands.native'' (default ''"auto"'') registers native commands.

- Auto: on for Discord/Telegram; off for Slack (until you add slash commands); ignored for providers without native support.

- Set ''channels.discord.commands.native'', ''channels.telegram.commands.native'', or ''channels.slack.commands.native'' to override per provider (bool or ''"auto"'').

- ''false'' clears previously registered commands on Discord/Telegram at startup. Slack commands are managed in the Slack app and are not removed automatically.

- ''commands.nativeSkills'' (default ''"auto"'') registers ''skill'' commands natively when supported.

- Auto: on for Discord/Telegram; off for Slack (Slack requires creating a slash command per skill).

- Set ''channels.discord.commands.nativeSkills'', ''channels.telegram.commands.nativeSkills'', or ''channels.slack.commands.nativeSkills'' to override per provider (bool or ''"auto"'').

- ''commands.bash'' (default ''false'') enables ''! <cmd>'' to run host shell commands (''/bash <cmd>'' is an alias; requires ''tools.elevated'' allowlists).

- ''commands.bashForegroundMs'' (default ''2000'') controls how long bash waits before switching to background mode (''0'' backgrounds immediately).

- ''commands.config'' (default ''false'') enables ''/config'' (reads/writes ''openclaw.json'').

- ''commands.debug'' (default ''false'') enables ''/debug'' (runtime-only overrides).

- ''commands.useAccessGroups'' (default ''true'') enforces allowlists/policies for commands.

Tutorial.step

Command list

Text + native (when enabled):

- ''/help''

- ''/commands''

- ''/skill <name> [input]'' (run a skill by name)

- ''/status'' (show current status; includes provider usage/quota for the current model provider when available)

- ''/allowlist'' (list/add/remove allowlist entries)

- ''/approve <id> allow-once|allow-always|deny'' (resolve exec approval prompts)

- ''/context [list|detail|json]'' (explain "context"; ''detail'' shows per-file + per-tool + per-skill + system prompt size)

- ''/whoami'' (show your sender id; alias: ''/id'')

- ''/subagents list|stop|log|info|send'' (inspect, stop, log, or message sub-agent runs for the current session)

- ''/config show|get|set|unset'' (persist config to disk, owner-only; requires ''commands.config: true'')

- ''/debug show|set|unset|reset'' (runtime overrides, owner-only; requires ''commands.debug: true'')

- ''/usage off|tokens|full|cost'' (per-response usage footer or local cost summary)

- ''/tts off|always|inbound|tagged|status|provider|limit|summary|audio'' (control TTS; see ''/tts'')

- Discord: native command is ''/voice'' (Discord reserves ''/tts''); text ''/tts'' still works.

- ''/stop''

- ''/restart''

- ''/dock-telegram'' (alias: ''/dock_telegram'') (switch replies to Telegram)

- ''/dock-discord'' (alias: ''/dock_discord'') (switch replies to Discord)

- ''/dock-slack'' (alias: ''/dock_slack'') (switch replies to Slack)

- ''/activation mention|always'' (groups only)

- ''/send on|off|inherit'' (owner-only)

- ''/reset'' or ''/new [model]'' (optional model hint; remainder is passed through)

- ''/think <off|minimal|low|medium|high|xhigh>'' (dynamic choices by model/provider; aliases: ''/thinking'', ''/t'')

- ''/verbose on|full|off'' (alias: ''/v'')

- ''/reasoning on|off|stream'' (alias: ''/reason''; when on, sends a separate message prefixed ''Reasoning:''; ''stream'' = Telegram draft only)

- ''/elevated on|off|ask|full'' (alias: ''/elev''; ''full'' skips exec approvals)

- ''/exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>'' (send ''/exec'' to show current)

- ''/model <name>'' (alias: ''/models''; or ''/<alias>'' from ''agents.defaults.models.*.alias'')

- ''/queue <mode>'' (plus options like ''debounce:2s cap:25 drop:summarize''; send ''/queue'' to see current settings)

- ''/bash <command>'' (host-only; alias for ''! <command>''; requires ''commands.bash: true'' + ''tools.elevated'' allowlists)

Text-only:

- ''/compact [instructions]'' (see ''/concepts/compaction'')

- ''! <command>'' (host-only; one at a time; use ''!poll'' + ''!stop'' for long-running jobs)

- ''!poll'' (check output / status; accepts optional ''sessionId''; ''/bash poll'' also works)

- ''!stop'' (stop the running bash job; accepts optional ''sessionId''; ''/bash stop'' also works)

Notes:

- Commands accept an optional '':'' between the command and args (e.g. ''/think: high'', ''/send: on'', ''/help:'').

- ''/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.

- For full provider usage breakdown, use ''openclaw status --usage''.