Skip to main content
Reference Last updated: 6 March 2026

Commands & directives

This page documents Untether’s user-visible command surface: message directives, in-chat commands, and the CLI.

This page documents Untether’s user-visible command surface: message directives, in-chat commands, and the CLI.

Message directives

Untether parses the first non-empty line of a message for a directive prefix.

DirectiveExampleEffect
/<engine-id>/codex fix flaky testSelect an engine for this message.
/<project-alias>/happy-gadgets add escape-podSelect a project alias.
@branch@feat/happy-camera rewind to checkpointRun in a worktree for the branch.
Combined/happy-gadgets @feat/flower-pin observe unseenProject + branch.

Notes:

  • Directives are only parsed at the start of the first non-empty line.
  • Parsing stops at the first non-directive token.
  • If a reply contains a dir: line, Untether ignores new directives and uses the reply context.

See Context resolution for the full rules.

When a run has project context, Untether appends a footer line as part of the 🏷 info line:

  • With branch: dir: <project> @<branch>
  • Without branch: dir: <project>

This line is parsed from replies and takes precedence over new directives. For backwards compatibility, Untether also accepts the older ctx: format when parsing replies.

Telegram in-chat commands

CommandDescription
/cancelReply to the progress message to stop the current run.
/agentShow/set the default engine for the current scope.
/modelShow/set the model override for the current scope.
/reasoningShow/set the reasoning override for the current scope.
/triggerShow/set trigger mode (mentions-only vs all).
/file put <path>Upload a document into the repo/worktree (requires file transfer enabled).
/file get <path>Fetch a file or directory back into Telegram.
/topic <project> @branchCreate/bind a topic (topics enabled).
/ctxShow context binding (chat or topic).
/ctx set <project> @branchUpdate context binding.
/ctx clearRemove context binding.
/planmodeToggle Claude Code plan mode (on/auto/off/show/clear).
/usageShow Claude Code subscription usage (5h window, weekly, per-model). Requires Claude Code OAuth credentials (see troubleshooting).
/exportExport last session transcript as Markdown or JSON.
/browseBrowse project files with inline keyboard navigation.
/pingHealth check — replies with uptime.
/restartGracefully drain active runs and restart Untether.
/verboseToggle verbose progress mode (on/off/clear). Shows tool details in progress messages.
/configInteractive settings menu — plan mode, ask mode, verbose, engine, model, reasoning, trigger toggles with inline buttons.
/statsPer-engine session statistics — runs, actions, and duration for today, this week, and all time. Pass an engine name to filter (e.g. /stats claude).
/authHeadless device re-authentication for Codex — runs codex login --device-auth and sends the verification URL + device code. /auth status checks CLI availability. Codex-only.
/newClear stored sessions for the current scope (topic/chat).

Notes:

  • Outside topics, /ctx binds the chat context.
  • In topics, /ctx binds the topic context.
  • /new clears sessions but does not clear a bound context.

CLI

Untether’s CLI is an auto-router by default; engine subcommands override the default engine.

Commands

CommandDescription
untetherStart Untether (runs onboarding if setup/config is missing and you’re in a TTY).
untether <engine>Run with a specific engine (e.g. untether codex).
untether configShow config file path and content.
untether init <alias>Register the current repo as a project.
untether chat-idCapture the current chat id.
untether chat-id --project <alias>Save the captured chat id to a project.
untether doctorValidate Telegram connectivity and related config.
untether pluginsList discovered plugins without loading them.
untether plugins --loadLoad each plugin to validate types and surface import errors.

Common flags

FlagDescription
--onboardForce the interactive setup wizard before starting.
--transport <id>Override the configured transport backend id.
--debugWrite debug logs to debug.log.
--final-notify/--no-final-notifySend the final response as a new message vs an edit.
Was this helpful?

Related Articles