Skip to main content
Commands, package names, and image names on this page come from the open-source project that Mibyan Desktop is built on, and can differ from the Mibyan Desktop installer. For the supported Mibyan install and update path, see Install and update.
Mibyan has two slash-command surfaces, both driven by a central COMMAND_REGISTRY in mibyan_cli/commands.py:
  • Interactive CLI slash commands — dispatched by cli.py, with autocomplete from the registry
  • Messaging slash commands — dispatched by gateway/run.py, with help text and platform menus generated from the registry
Installed skills are also exposed as dynamic slash commands on both surfaces. (/plan used to be one of these; it is now a built-in command — see the Session table below.) A skill whose name matches a built-in command (or one of its aliases) never gets its own /<name> — the built-in wins and the skill stays loadable via /skill <name>; /skills list, /help skills and the command palette mark such a skill with slash command /<name> unavailable — name taken by built-in; use /skill <name>.

Permissions and admin/user split

Every messaging platform that supports a per-user allowlist (Telegram, Discord, Slack, Matrix, Mattermost, Signal, …) also supports a two-tier slash command split: admins get every registered command, regular users only get the names you list in user_allowed_commands (plus the always-allowed floor /help and /whoami). Configure allow_admin_from and user_allowed_commands (and the per-group equivalents group_allow_admin_from / group_user_allowed_commands) inside the platform’s extra: block in ~/.mibyan/config.yaml. See the per-platform docs for examples — the structure is identical across platforms: If allow_admin_from is unset for a scope, that scope stays in unrestricted backward-compat mode — every allowed user can run every command.

Interactive CLI slash commands

Type / in the CLI to open the autocomplete menu. Built-in commands are case-insensitive.

Session

Configuration

Tools & Skills

Info

Exit

Dynamic CLI slash commands

Quick Commands

User-defined quick commands map a short slash command to either a shell command or another slash command. Configure them in ~/.mibyan/config.yaml:
Then type /status, /deploy, or /inbox in the CLI or a messaging platform. Quick commands are resolved at dispatch time and may not appear in every built-in autocomplete/help table. String-only prompt shortcuts are not supported as quick commands. Put longer reusable prompts in a skill, or use type: alias to point at an existing slash command.

Custom model aliases

Define your own short names for models you use often, then reach them with /model <alias> in a running session, mibyan chat --model <alias> at startup, or any messaging platform. Aliases work identically in these paths, on session-only (default) and --global switches. Two config formats are supported: Full form — pin an exact model, provider, and optionally a base URL. Put this in ~/.mibyan/config.yaml:
An alias with its own base_url can carry that endpoint’s credential via api_key (a literal, or a "${VAR}" reference) or key_env (an environment variable name); api_key wins if both are set. With neither set, the key is resolved from the alias host and never inherited from the provider that was active before the switch. Short form — provider/model in one string. Set from the shell without editing YAML:
Then in chat:
User aliases take precedence over built-in short names, so naming an alias sonnet, kimi, opus, etc. will shadow the built-in. Alias names are case-insensitive.

Alias Resolution

Commands support prefix matching: typing /h resolves to /help, /mod resolves to /model. When a prefix is ambiguous (matches multiple commands), the first match in registry order wins. Full command names and registered aliases always take priority over prefix matches.

Messaging slash commands

Slack thread commands (! prefix): Slack itself blocks native slash commands inside message threads (“/queue is not supported in threads. Sorry!”) and never delivers them to Mibyan. Inside a Slack thread, use the ! prefix instead — !stop, !new, !status — and the gateway dispatches it exactly like the slash form. @Mibyan !stop and @Mibyan /stop work in threads too. Only the first token is checked against the known command list, so messages like !nice work pass through to the agent unchanged. See Using commands inside threads for details.
The messaging gateway supports the following built-in commands inside Telegram, Discord, Slack, WhatsApp, Signal, Email, Home Assistant, and Teams chats:

Notes

  • /skin, /snapshot, /export, /import, /reload, /tools, /toolsets, /browser, /config, /cron, /platforms, /paste, /image, /statusbar, /battery, /focus, /plugins, /indicator, /wake, /journey, /redraw, /clear, /history, /save, /copy, /handoff, /prompt, /pet, /hatch, /timestamps, /subscription, and /quit are CLI-only commands.
  • /skills is CLI-only for search/browse/install; its write-approval review subcommands (pending, approve, reject, diff, approval) also work on messaging platforms when skills.write_approval is on. /memory works on both surfaces.
  • /verbose is CLI-only by default, but can be enabled for messaging platforms by setting display.tool_progress_command: true in config.yaml. When enabled, it cycles the display.tool_progress mode and saves to config.
  • /focus and /verbose share one suppression path (display.tool_progress), so they can never contradict each other: /focus on pins tool progress to off and stashes your mode under display.focus_saved_tool_progress; /focus off restores it; cycling /verbose while focus is on takes the mode back and clears the focus badge. Focus view is display-only — it never changes conversation history, the system prompt, or anything sent to the model, so it has zero prompt-cache impact.
  • /sethome, /restart, /approve, /deny, /topic, /platform, and /commands are messaging-only commands.
  • /status, /egress, /version, /whoami, /bg, /btw, /queue, /steer, /voice, /reload-mcp, /reload-skills, /rollback, /diff, /debug, /fast, /approvals, /busy, /footer, /curator, /kanban, /topup, /login, /suggestions, /blueprint, /learn, /init, /sessions, /loop, and /yolo work in both the CLI and the messaging gateway.
  • /voice join, /voice channel, and /voice leave are only meaningful on Discord.
  • In the TUI, /sessions shows live sessions in the current TUI process. Use /resume [name] or mibyan --tui --resume <id-or-title> for saved or closed transcripts.

Confirmation prompts for destructive commands

The CLI prompts before running slash commands that throw away unsaved session state. The current destructive set is: For each of these the CLI opens a three-choice modal: Approve Once (proceed this time), Always Approve (proceed and persist approvals.destructive_slash_confirm: false so future destructive commands run without prompting), or Cancel. Inline skip: append now, --yes, or -y to bypass the modal for a single invocation — e.g. /reset now, /new --yes my-session, /clear -y, /undo -y. Useful when the modal doesn’t render correctly on your terminal (see issue #30768 for native Windows PowerShell) or when scripting against the CLI. Set approvals.destructive_slash_confirm: false in ~/.mibyan/config.yaml to disable the prompts globally; set it back to true to re-enable. See Security — Destructive slash command confirmation for context.