Slash commands
Commands are handled by the Gateway. Send them as a standalone message that starts with/.
Inline text like hello /status is ignored for commands.
Directives (/think, /verbose, /reasoning, /elevated) are parsed even when inline and are stripped from the message before the model sees it.
Config
commands.text(defaulttrue) enables parsing/...in chat messages.- On surfaces without native commands (WhatsApp/WebChat/Signal/iMessage), text commands still work even if you set this to
false.
- On surfaces without native commands (WhatsApp/WebChat/Signal/iMessage), text commands still work even if you set this to
commands.native(defaultfalse) registers native commands on Discord/Slack/Telegram.falseclears previously registered commands on Discord/Telegram at startup.- Slack commands are managed in the Slack app and are not removed automatically.
commands.useAccessGroups(defaulttrue) enforces allowlists/policies for commands.
Command list
Text + native (when enabled):/help/status/stop/restart/activation mention|always(groups only)/send on|off|inherit(owner-only)/resetor/new/think <level>(aliases:/thinking,/t)/verbose on|off(alias:/v)/reasoning on|off|stream(alias:/reason;stream= Telegram draft only)/elevated on|off(alias:/elev)/model <name>(or/<alias>fromagent.models.*.alias)/queue <mode>(plus options likedebounce:2s cap:25 drop:summarize; send/queueto see current settings)
/compact [instructions](see /concepts/compaction)
- Commands accept an optional
:between the command and args (e.g./think: high,/send: on,/help:).
Surface notes
- Text commands run in the normal chat session (DMs share
main, groups have their own session). - Native commands use isolated sessions:
discord:slash:<userId>,slack:slash:<userId>,telegram:slash:<userId>. /stoptargets the active chat session so it can abort the current run.- Slack:
slack.slashCommandis still supported for a single/clawd-style command. If you enablecommands.native, you must create one Slack slash command per built-in command (same names as/help).