Kin / Use Kin
Slash commands
Type / to run a built-in client action or invoke a user-facing skill. Built-ins stay local; skills add their shared instruction block as a turn.
Read as MarkdownType / in the composer to run a built-in client action or invoke a
user-facing skill. Built-ins stay local. A skill
gesture such as /review-pr main adds that skill’s shared instruction block
as a user turn.
Using the menu
Type / in the composer and a filtered menu appears above the input. Keep
typing to narrow it — the menu shows every command whose name starts with what
you have typed. The menu stays open only while the text is a bare /token
(no space, no newline); as soon as you type a space the menu hides so you can
add arguments.
| Key | Action |
|---|---|
| ++up++ / ++down++ | Move the highlight |
| ++tab++ | Fill the highlighted command into the composer (with a trailing space) so you can add arguments |
| ++enter++ | Run the highlighted command |
| click | Run the clicked command |
The composer keeps focus the whole time, so you filter by typing and the menu tracks your input. To run a command directly, type its full name and press ++enter++ — the menu does not have to be open.
Finding commands with Ctrl+P
Ctrl+P fuzzy-searches built-ins and user-invocable skills by name,
arguments, or description. Choosing a Kin result stages an undoable /name
in the composer. Review or add arguments, then press Enter; Ctrl+Z
restores the replaced draft. Esc leaves it unchanged.
In the slash menu, Tab fills a command and Enter runs it.
Built-in commands
These ship with Kin and are always available. Their names are reserved: a skill cannot replace or rebind a built-in.
| Command | Argument | Description |
|---|---|---|
/help |
Keybindings and commands overlay (also ++f1++) | |
/clear |
Reset the transcript and model history (asks to confirm) | |
/mode |
<name> |
Set the permission mode (auto / strict); bare /mode toggles auto ↔ strict (same as ++shift+tab++) |
/plan |
[task] |
Enter the read-only planning freeze and run [task]; bare /plan toggles the freeze (the human escape hatch). See Planning |
/model |
<id> |
Swap to an exact model id, or open the cross-provider picker. Missing credentials prompt at the point of use; f toggles favorites. See models. |
/models |
[jobs|connections|routes] |
Open the staged human model-configuration hub (Jobs by default). Save & apply validates the complete configuration, writes once, and applies one prepared snapshot; Escape discards all staged edits. |
/routes |
Deep-link to /models routes: add/edit/duplicate/remove routes and inspect preset/model identity, credential readiness, manual/observed vision, assignments, and this-run usage. Stored secret values are never shown. |
|
/compact |
[focus] |
Summarize history to free context |
/theme |
[name] |
Switch and persist the TUI theme. Bare cycles kin (terminal ground) ↔ kin-graphite (opaque fallback); an explicit registered Textual theme name such as nord remains available. A standing KIN_THEME env or project override is named with a warning |
/spinner |
[name] |
Pick the busy-spinner vibe (rain · braille · arc · toggle · line — the style table). Bare opens a picker with a live preview; /spinner <name> applies directly. Applies live and persists (spinner in ~/.kin/settings.toml; a standing KIN_SPINNER env or project override is named with a warning). HUMAN-ONLY cosmetic — not model-writable |
/agents |
Open the unified agent panel — shells, foreground/background agents, and tasks (also ++ctrl+o++) | |
/resume |
[id] |
Switch to a saved conversation; bare opens a picker. If another live Kin holds that conversation’s process-lifetime lease, the switch refuses and keeps the current conversation open |
/skills |
List the skills discoverable from the workspace | |
/mcp |
Manage MCP servers — enable/disable, add, edit, remove, reconnect live | |
/reload |
Re-read settings.toml + the mcp.json scopes and apply model routes/wire, appearance (theme + spinner), and MCP changes live (no restart). A route catalog is fully validated before the root/future dispatches switch; running children keep their frozen snapshot. |
|
/tokens |
Show context usage by component, plus the journal surface breakdown | |
/history |
[n] |
Show what the model currently sees, what compaction shadowed, and which record replaced it (default: the most recent 40) |
/export |
[--full] [path] |
Dump the current session’s saved transcript to a markdown file — bare writes kin-export-<session-id>.md into the workdir; an explicit path wins (overwrite allowed, no confirm); --full also writes the shadowed history |
/fork |
Branch this session — copies the on-disk journal to a new session id and switches you onto the copy; the source is left untouched, resumable later with /resume <old-id> |
|
/editor |
Compose the current draft in $VISUAL/$EDITOR (falls back to vi) — suspends kin, opens the editor on a temp file seeded with the composer’s text, and replaces the composer text on a clean exit. Failed editor launches or unreadable UTF-8 drafts leave the composer unchanged and report the failure. Never submits; you still review and hit enter |
|
/rewind |
[n] [conversation|files|both] |
Roll back completed turns (default: one, conversation only). Multiple turns or file restoration require confirmation. Scopes and recovery. |
/retry |
Re-send the last user message | |
/grants |
[revoke <n>] |
View or revoke session approvals and persistent trust grants |
/login |
[status | chatgpt [status | --device-auth]] |
With chatgpt, sign your own Kin directly into your subscription; device authentication supports remote hosts, and status checks local sign-in. Without chatgpt: connect this Kin to managed Kinra through the browser passkey sign-in; status reads the last validated identity offline and reports the active web-retrieval route — hosted through the login, an explicit local Brave override, or off with the two ways out. See Web tools |
/logout |
[chatgpt] |
With chatgpt, remove Kin’s local subscription sign-in without signing other applications out. Without it: revoke this device key first, then remove local managed state; the note says when hosted web retrieval was withdrawn from the running session |
/github |
[status|connect|repair] [hostname] |
Check or establish gh CLI authentication for structured PR operations |
/tree |
Toggle the file-tree sidebar (also ++ctrl+g++) | |
/view |
<path> |
Peek a file in a syntax-highlighted read-only viewer (alias of v on the tree) |
/providers |
[name] |
Deep-link to /models connections, optionally preselecting a built-in or custom connection. Credentials, default model/tier, custom fields, metadata-only connection checks, and model-catalogue import remain staged until Save & apply. |
/web-search |
Inspect hosted search or save a local Brave override; the change applies live. Web tools. | |
/nudges |
Open the session-nudge multi-select. Apply replaces the complete set; Escape cancels. No preferences are currently registered; the retired workflow-first setting is ignored on resume |
|
/effort |
[level] |
Choose the active backend’s reasoning effort. A change confirms prompt-cache invalidation and journals your explicit choice. Vocabulary and defaults. |
/settings |
[on|off] |
Let Kin help tune your settings; bare toggles. When on, a settings guide is injected each turn so the model can use the read_settings / propose_settings tools — it can only ever change sampling/model knobs, never containment or secrets, and you approve every diff |
/cost |
[on|off] |
Report or toggle inference-cost display. Default off; on/off persists globally and applies live. Coverage. |
/config |
Open the configuration picker: visible guided conversations for AGENTS.md, settings, and skills; the isolated editor for agent profiles and .kin/mcp.json; and the human-only Model configuration hub — see Editing configuration |
|
/edit-mcp |
[instruction] |
Edit the project .kin/mcp.json server config |
/new-agent |
<name> [instruction] |
Draft a new subagent profile |
/edit-agent |
<name> [instruction] |
Edit a subagent profile |
/stop |
Interrupt the running turn | |
/exit |
Quit kin | |
/quit |
Quit kin (alias of /exit) |
See keybindings for keyboard and modal controls.
/github
/github is the proactive human-owned authentication surface for the
structured git and github tools. A missing login
during either tool now raises the same connection flow in place and resumes
that operation automatically, so you do not normally need to leave the task
and run this command first. Bare /github and
/github status [hostname] run gh auth status and report whether the CLI is
ready without exposing a token. /github connect [hostname] suspends the TUI
and runs a fixed gh auth login --web flow so gh can show its device code and
browser instructions in the real terminal. If a stored account exists but is
unhealthy, Connect uses the fixed gh auth refresh flow instead of creating a
duplicate login. Kin selects HTTPS for its own Git calls without rewriting your
saved remote.
/github repair first checks the active account. When it is present, repair
performs a real read-only ls-remote through the same fixed, gh-backed
HTTPS route the structured Git tool uses. If login is absent, repair runs the
login flow. If the account exists but its data-plane probe fails, repair runs
gh auth refresh for that active host and probes again. This distinguishes
“the account exists” from “Git transport actually works.”
Kin never stores a GitHub token. gh owns its credential broker, and its status
projection removes token fields before output reaches Kin. Both the status
check and model-facing adapter strip inherited GH_* / GITHUB_* environment
tokens so a repository or launched process cannot silently choose a different
identity. Only the human can accept the connection modal; child and headless
runs report a needs-human requirement instead.
/effort
Bare /effort opens the picker; /effort <level> validates the value and
asks you to confirm prompt-cache invalidation. Applied choices are journaled
and shown beside the model. The model reference
owns each backend’s vocabulary, default, and wire mapping.
The model can request a reviewed settings proposal but cannot set effort without your approval.
Editing configuration
/config is the common launcher, but each configuration surface keeps its own
authority and canonical procedure:
| Surface | What /config starts |
Publication behavior |
|---|---|---|
| AGENTS.md | A visible root /init turn |
propose_agents_md writes only <workdir>/AGENTS.md after a fresh diff approval |
| settings | A visible normal turn that reads with read_settings |
propose_settings may change only the model-writable allowlist; changes feed new sessions |
| skill | A source-labelled picker, explicit scope picker, then a visible skill-creator turn |
propose_skill publishes one validated bundle transaction; project override is the default |
| agent profile | The quiet isolated editor | Complete profile diff, then profile-cache reload |
.kin/mcp.json |
The quiet isolated editor | Redacted source, complete diff, then live MCP reconnect |
| Model configuration | The staged human-owned /models hub |
One validated settings/credential/routes apply |
The settings, skill, and AGENTS.md conversations are ordinary visible root
turns: you see their questions, source context, tool calls, and result in the
transcript. Skills use the shared registry view, so the picker labels project,
user, and bundled claims as valid/invalid and effective/shadowed. Project scope
is recommended; user scope is an explicit persistent choice with a fresh,
non-reusable approval. /init and skill-creator are the sole guided authoring
procedures for root guidance and skill bundles.
Every model-authored settings, skill, or AGENTS.md write stops on a fresh diff
approval. Rejection writes nothing, and a target changed since the diff was
prepared aborts rather than overwriting newer work. These proposal tools are
top-level only, frozen during planning, and return needs_human in headless
execution. Skill and AGENTS.md changes leave the in-flight parent system stable;
the next root turn or resume adopts them, and children spawned afterward start
with the fresh configuration. Project proposals are captured for /rewind.
Agent profiles and MCP remain the only quiet isolated-editor rows. Their editor
uses a read-only subagent (read_file / ls / grep / glob) and a single
validated propose_edit channel; its exploration stays out of the transcript.
The direct /new-agent, /edit-agent, and /edit-mcp shortcuts remain.
The former /new-skill, /edit-skill, /edit-settings, and /edit-agents
built-ins were removed without aliases. Those names are no longer reserved, so
a project or user skill may claim one of them.
Custom slash skills
Custom prompt files now have one owner: a
<name>/SKILL.md bundle under
<workdir>/.kin/skills/ or ~/.kin/skills/. There is no separate
.kin/commands/ tree and no foreign-command discovery.
By default a prompt skill has both doors: the model may load it with the
skill tool and you may invoke it as /name. Set
disable-model-invocation: true for a human-only slash procedure, or
user-invocable: false for model-only instructions. Built-in names are
reserved and an invalid project entry reserves its own name rather than falling
through to another source.
An accepted skill gesture remains visible as the typed /name arguments
message plus a settled skill invocation /name · by you timeline row. An
unknown, invalid, or unavailable skill reports the lookup failure without that
success row.
The complete bundle schema, argument substitution, precedence, live refresh,
catalog budget, and /skills diagnostics are in Skills.
For saved executable bundles, see Workflow migration.