SPB Git

spb/khaelor Public

KHAELOR — a terminal-native autonomous engineering agent powered by Anthropic.

TypeScript 82.9% HTML 14.9% CSS 1.1% JavaScript 0.7%
25.9 KB · 340 lines html
Raw Blame History
1<!doctype html>2<!--3KHAELOR4File: website/public/docs/commands.html5Description: Every slash command with examples, the Ctrl+K universal palette, and the complete keyboard reference.6Author: Simon-Pierre Boucher7Contact: contact@spboucher.ai8-->9<html lang="en">10<head>11<meta charset="utf-8">12<meta name="viewport" content="width=device-width, initial-scale=1">13<title>Commands &amp; keyboard — KHAELOR</title>14<meta name="description" content="All KHAELOR slash commands, the universal command palette, and the full keyboard reference.">15<link rel="stylesheet" href="/styles.css">16<script>17(function(){try{var t=localStorage.getItem("khaelor-theme");if(!t&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: light)").matches)t="light";if(t==="light")document.documentElement.setAttribute("data-theme","light");}catch(e){}})();18</script>19<script defer src="/site.js"></script>20</head>21<body>2223<header class="site-header"><div class="inner">24  <a class="wordmark" href="/"><span class="glyph">&#10095;</span><span class="g-ember">KHAELOR</span></a>25  <nav>26    <a href="/docs/getting-started.html">Docs</a>27    <a href="/#install">Install</a>28    <button id="theme-toggle" type="button" aria-label="Toggle color theme">light</button>29  </nav>30</div></header>3132<main class="page"><div class="docs-layout">3334<aside class="sidebar">35  <div class="group"><div class="group-title">Start</div>36    <a href="/docs/getting-started.html">Getting started</a>37    <a href="/docs/cookbook.html">Cookbook</a>38  </div>39  <div class="group"><div class="group-title">Using KHAELOR</div>40    <a href="/docs/usage.html">The TUI</a>41    <a href="/docs/commands.html">Commands &amp; keyboard</a>42    <a href="/docs/tools.html">Tools</a>43    <a href="/docs/sessions.html">Sessions</a>44  </div>45  <div class="group"><div class="group-title">Autonomy</div>46    <a href="/docs/phases.html">Phase gates</a>47    <a href="/docs/verification.html">Verification</a>48    <a href="/docs/worktrees.html">Parallel worktrees</a>49    <a href="/docs/daemon.html">The daemon</a>50  </div>51  <div class="group"><div class="group-title">Intelligence</div>52    <a href="/docs/repograph.html">Semantic index</a>53    <a href="/docs/memory.html">Project memory</a>54    <a href="/docs/context.html">Context engine</a>55    <a href="/docs/fork-replay.html">Fork · replay · sdiff</a>56  </div>57  <div class="group"><div class="group-title">Control</div>58    <a href="/docs/permissions.html">Permissions</a>59    <a href="/docs/configuration.html">Configuration</a>60    <a href="/docs/cli.html">CLI reference</a>61  </div>62  <div class="group"><div class="group-title">Internals</div>63    <a href="/docs/architecture.html">Architecture</a>64    <a href="/docs/events.html">The event model</a>65    <a href="/docs/theming.html">Theming &amp; terminal</a>66  </div>67  <div class="group"><div class="group-title">Help</div>68    <a href="/docs/faq.html">FAQ &amp; troubleshooting</a>69  </div>70</aside>7172<article class="content">7374<h1>Commands &amp; keyboard</h1>75<p class="lead">Everything is reachable three ways: a slash command, the <kbd>Ctrl+K</kbd>76palette, or a direct key. You never have to memorize anything — the palette lists it all.</p>7778<h2 id="slash">The slash palette<a class="anchor" href="#slash">#</a></h2>79<p>Type <code>/</code> as the first character of the composer to open the slash palette.80Typing filters fuzzily; <kbd>&uarr;</kbd>/<kbd>&darr;</kbd> navigate; <kbd>Enter</kbd> runs;81<kbd>Tab</kbd> completes without running; <kbd>Esc</kbd> closes.</p>82<pre class="term" data-no-copy><code> <span class="t-accent">&#10095;</span> /se83   &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;84    <span class="t-b">/se</span>ssions   <span class="t-dim">browse and resume sessions</span>85    /new        <span class="t-dim">start a new session</span>86    /re<span class="t-b">s</span>um<span class="t-b">e</span>     <span class="t-dim">resume the most recent session</span>87   &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;88    <span class="t-dim">&uarr;&darr; navigate &middot; Enter run &middot; Esc close</span></code></pre>8990<h2 id="all-commands">All commands<a class="anchor" href="#all-commands">#</a></h2>9192<h3 id="cmd-model"><code>/model</code> — model selector</h3>93<p>Shows the current Anthropic model and configured alternatives; applies immediately to the94session and updates the status bar. Inside the panel, <kbd>t</kbd> cycles the thinking mode95(<code>off</code> / <code>adaptive</code> / <code>always</code>) and <kbd>o</kbd> cycles the96output token budget.</p>97<pre class="term" data-no-copy><code> &#9484;&#9472; model &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;98   <span class="t-dim">current   claude-sonnet-4-5        thinking adaptive</span>99   <span class="t-dim">&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;</span>100  <span class="t-accent">&#10095;</span> claude-sonnet-4-5      <span class="t-dim">default &middot; fast</span>101    claude-opus-4-5        <span class="t-dim">deepest reasoning</span>102    claude-haiku-4-5       <span class="t-dim">cheapest &middot; aux model</span>103   <span class="t-dim">&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;</span>104   <span class="t-dim">t thinking: adaptive &middot; o output budget: 16000</span>105 &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;106   <span class="t-dim">&uarr;&darr; select &middot; Enter apply &middot; t/o cycle &middot; Esc close</span></code></pre>107<p>Model ids are never hard-coded — the list comes from your108<a href="/docs/configuration.html#model">configuration and aliases</a>. From the shell:109<code>khaelor --model &lt;id&gt;</code>.</p>110111<h3 id="cmd-config"><code>/config</code> — configuration panel</h3>112<p>A keyboard-navigable view over the same settings the config files expose (the files stay113directly editable). <kbd>p</kbd> toggles whether an edit writes user scope114(<code>~/.khaelor/config.json</code>) or project scope (<code>.khaelor/config.json</code>) —115the target is always shown before writing. Secrets are never displayed: the API key row reads116<code>set via environment &#10003;</code>. See <a href="/docs/configuration.html">Configuration</a>.</p>117118<h3 id="cmd-permissions"><code>/permissions</code> — permission rules</h3>119<p>Lists every effective permission rule with its source (default, user, project, session),120shows which rule matched recent decisions, and supports deleting or reordering project rules.121It is the audit-friendly mirror of the config files. See122<a href="/docs/permissions.html">Permissions</a>.</p>123124<h3 id="cmd-context"><code>/context</code> — context inspector</h3>125<p>Shows exactly what occupies the model's context window — system prompt, project126instructions, conversation, tool observations, repository context, checkpoint, reserved output127— with real token counts, plus which files are materially represented and why. Press128<kbd>c</kbd> inside to compact immediately.</p>129<pre class="term" data-no-copy><code> &#9484;&#9472; context &middot; 41,382 / 200,000 tokens &middot; 21% &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;130   <span class="t-dim">system prompt              3,120</span>131   <span class="t-dim">project instructions       1,240</span>132   <span class="t-dim">conversation              24,988</span>133   <span class="t-dim">tool observations          9,414</span>134   <span class="t-dim">repository context         1,620</span>135   <span class="t-dim">checkpoint                   —     (no compaction yet)</span>136   <span class="t-dim">reserved output           16,000</span>137 &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;138   <span class="t-dim">Enter file detail &middot; c compact now &middot; Esc close</span></code></pre>139140<h3 id="cmd-sessions"><code>/sessions</code> — session picker</h3>141<p>Browse this project's sessions with titles, ages, real costs, and git branches.142<kbd>Enter</kbd> resumes, <kbd>n</kbd> starts new, <kbd>r</kbd> renames, <kbd>x</kbd> deletes,143<kbd>/</kbd> filters. See <a href="/docs/sessions.html">Sessions</a>.</p>144145<h3 id="cmd-resume"><code>/resume</code> — resume the most recent session</h3>146<p>Replays the most recent session's event log: the transcript reprints into scrollback,147file-state tracking is rebuilt, and even a permission prompt that was pending when you quit148reappears. Starting <code>khaelor</code> in a project with an interrupted session also hints:149<code>Interrupted session from 12 min ago &middot; /resume to continue</code>.</p>150151<h3 id="cmd-new"><code>/new</code> — start a new session</h3>152<p>Begins a fresh session (new event log, fresh context) in the same project. The old session153remains in <code>/sessions</code>.</p>154155<h3 id="cmd-rename"><code>/rename</code> — rename the session</h3>156<p>Sets the session title shown in <code>/sessions</code>. Sessions otherwise receive a title157derived from your first request.</p>158159<h3 id="cmd-clear"><code>/clear</code> — clear the conversation</h3>160<p>Clears the visible conversation and the working context for a clean start while staying in161the same project. Use <code>/new</code> when you want the previous transcript preserved as its162own resumable session.</p>163164<h3 id="cmd-compact"><code>/compact</code> — compact the context now</h3>165<p>Manually triggers context compaction: the older conversation is distilled into a structured166checkpoint (objective, completed work, important files, decisions, failed attempts, running167processes, next steps) and raw evidence that still matters is preserved. KHAELOR also compacts168automatically under context pressure — <code>/compact</code> just does it on your schedule.169Inspect the resulting checkpoint in <code>/context</code>.</p>170171<h3 id="cmd-cost"><code>/cost</code> — session cost</h3>172<p>Token usage and dollars from <em>actual API usage metadata</em> — input, output, cache173writes, cache reads (with hit rate). If pricing for your configured model is unknown, the174dollar column honestly reads <code>n/a</code> rather than inventing an estimate.</p>175<pre class="term" data-no-copy><code> &#9484;&#9472; cost &middot; this session &#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;176   <span class="t-dim">input tokens           182,455        $0.27</span>177   <span class="t-dim">output tokens           24,110        $0.18</span>178   <span class="t-dim">cache write             41,020        $0.08</span>179   <span class="t-dim">cache read             512,300        $0.08   (90% hit)</span>180   <span class="t-dim">&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;</span>181   <span class="t-b">total                                 $0.61</span>182 &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;</code></pre>183184<h3 id="cmd-status"><code>/status</code> — session status</h3>185<p>A one-shot summary of the session: working directory, git branch and dirty state, model and186thinking mode, context utilization, cost so far, and running background processes.</p>187188<h3 id="cmd-v2">Autonomy &amp; audit commands (v2)</h3>189<table>190  <tr><th>Command</th><th>What it does</th></tr>191  <tr><td><code>/phase</code></td><td class="wrap">Show the current phase (understand / design / implement) and force a transition — logged as a user override. See <a href="/docs/phases.html">Phase gates</a>.</td></tr>192  <tr><td><code>/verify</code></td><td class="wrap">Run the project's verify checks now (typecheck, tests, lint) and record the real results.</td></tr>193  <tr><td><code>/fork</code></td><td class="wrap">Branch this session at a checkpoint. See <a href="/docs/sessions.html#fork">Fork, replay, sdiff</a>.</td></tr>194  <tr><td><code>/replay</code></td><td class="wrap">Re-run a session's user turns with the current model, sandboxed in a worktree.</td></tr>195  <tr><td><code>/sdiff</code></td><td class="wrap">Structured diff between two session runs.</td></tr>196  <tr><td><code>/memory</code></td><td class="wrap">The auto-maintained project memory with per-entry provenance.</td></tr>197  <tr><td><code>/spawn</code></td><td class="wrap">Run a subtask in an isolated git worktree with attenuated capabilities.</td></tr>198  <tr><td><code>/tasks</code></td><td class="wrap">The subtask board: phase, diff stats, verify state per task.</td></tr>199  <tr><td><code>/merge</code></td><td class="wrap">Supervised <code>--no-ff</code> merge of a finished subtask branch; conflicts abort cleanly.</td></tr>200  <tr><td><code>/goals</code></td><td class="wrap">Daemon goals and status. See <a href="/docs/daemon.html">The daemon</a>.</td></tr>201</table>202203<h3 id="cmd-diff"><code>/diff</code> — the diff viewer</h3>204<p id="diff-viewer">Opens the full-screen diff viewer (the one alternate-screen surface in205KHAELOR) showing the session's cumulative changes — only what KHAELOR changed, never your206pre-existing working-tree diff. Side-by-side on terminals wider than 120 columns, unified207below that, with syntax highlighting and per-file counts.</p>208<pre class="term" data-no-copy><code> <span class="t-b">/diff &middot; 3 files &middot; +64 −21</span>                                    <span class="t-dim">2/3</span>209 <span class="t-dim">&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;</span>210  src/session/store.ts                                    <span class="t-dim">+18 −6</span>211 <span class="t-accent">&#9656;</span>src/context/engine.ts                                   <span class="t-dim">+31 −12</span>212  src/tools/edit.ts                                       <span class="t-dim">+15 −3</span>213 <span class="t-dim">&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;</span>214  <span class="t-dim">&uarr;&darr;/jk scroll &middot; ]/[ next/prev file &middot; Tab file list &middot; u unified &middot; q close</span></code></pre>215<p>With an empty composer, <kbd>d</kbd> is the quick version: it prints the unified diff of216the most recent edit inline, without leaving the conversation.</p>217218<h3 id="cmd-processes"><code>/processes</code> — background processes</h3>219<p>Everything running in the background — dev servers, watchers, adopted long commands:</p>220<pre class="term" data-no-copy><code> <span class="t-b">PROCESSES</span>221 <span class="t-ok">&#9679;</span> p3  npm run dev   running   04:32222 <span class="t-ok">&#9679;</span> p4  pytest        running   00:18223 <span class="t-dim">&#9675; p1  npm test      exited    code 0</span>224   <span class="t-dim">&uarr;&darr; select &middot; Enter tail output &middot; s stop &middot; Esc close</span></code></pre>225<p><kbd>Enter</kbd> prints the selected process's recent output into the conversation;226<kbd>s</kbd> stops it (SIGTERM, then SIGKILL after a grace period, whole process group).</p>227228<h3 id="cmd-help"><code>/help</code> — list commands</h3>229<p>Prints every registered command with its slash name, description, and bound key.</p>230231<h3 id="cmd-quit"><code>/quit</code> — exit</h3>232<p>Exits KHAELOR. The session is already persisted (it always is — every event is journaled as233it happens). Background processes are stopped on session end, with notice. <kbd>Ctrl+D</kbd>234on an empty composer does the same; <kbd>Ctrl+C</kbd> twice within one second also quits.</p>235236<h2 id="palette">The universal palette — <kbd>Ctrl+K</kbd><a class="anchor" href="#palette">#</a></h2>237<p><kbd>Ctrl+K</kbd> opens the universal command palette from anywhere. It is sourced from the238same command registry that powers keys and slash commands, so every action appears with its239slash form and live key binding:</p>240<pre class="term" data-no-copy><code>   &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;241    <span class="t-accent">&#10095;</span> diff_242    <span class="t-dim">&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;</span>243    View diff                    <span class="t-dim">/diff        d</span>244    Compact context              <span class="t-dim">/compact</span>245    Show processes               <span class="t-dim">/processes</span>246   &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;247    <span class="t-dim">&uarr;&darr; navigate &middot; Enter run &middot; Esc close</span></code></pre>248249<h2 id="keyboard">Complete keyboard reference<a class="anchor" href="#keyboard">#</a></h2>250<p>Binding precedence: an open overlay captures keys first; then single-key actions (only when251the composer is empty); then composer bindings; then global bindings.</p>252253<h3 id="keys-global">Global</h3>254<table>255  <tr><th>Key</th><th>Action</th></tr>256  <tr><td><kbd>Esc</kbd></td><td class="wrap">Interrupt the agent run &middot; else close the open overlay &middot; else clear completion/selection</td></tr>257  <tr><td><kbd>Ctrl+K</kbd></td><td class="wrap">Universal command palette</td></tr>258  <tr><td><kbd>Ctrl+T</kbd></td><td class="wrap">Cycle live tool detail for the current turn (collapsed &harr; 12-line tail)</td></tr>259  <tr><td><kbd>Ctrl+C</kbd></td><td class="wrap">Clear the composer; pressed twice within 1&nbsp;s, quits</td></tr>260  <tr><td><kbd>Ctrl+D</kbd></td><td class="wrap">Quit (empty composer only)</td></tr>261  <tr><td><kbd>Ctrl+L</kbd></td><td class="wrap">Repaint the live region (recover from external screen corruption)</td></tr>262  <tr><td><kbd>Ctrl+Z</kbd></td><td class="wrap">Suspend to the shell; restores cleanly on <code>fg</code></td></tr>263</table>264265<h3 id="keys-composer">Composer</h3>266<table>267  <tr><th>Key</th><th>Action</th></tr>268  <tr><td><kbd>Enter</kbd></td><td class="wrap">Submit (or queue as a steering message while the agent runs)</td></tr>269  <tr><td><kbd>Shift+Enter</kbd> / <kbd>Ctrl+J</kbd></td><td class="wrap">Insert newline (<kbd>Ctrl+J</kbd> works in every terminal; trailing <code>\</code> + <kbd>Enter</kbd> also continues)</td></tr>270  <tr><td><kbd>&larr;</kbd> <kbd>&rarr;</kbd>, <kbd>Ctrl+B</kbd> <kbd>Ctrl+F</kbd></td><td class="wrap">Move by character</td></tr>271  <tr><td><kbd>Alt+&larr;/&rarr;</kbd>, <kbd>Alt+B</kbd> <kbd>Alt+F</kbd></td><td class="wrap">Move by word</td></tr>272  <tr><td><kbd>Ctrl+A</kbd> / <kbd>Ctrl+E</kbd></td><td class="wrap">Line start / line end</td></tr>273  <tr><td><kbd>&uarr;</kbd> / <kbd>&darr;</kbd></td><td class="wrap">Line up/down in a multiline buffer; prompt history at the buffer edges</td></tr>274  <tr><td><kbd>Ctrl+R</kbd></td><td class="wrap">Incremental history search</td></tr>275  <tr><td><kbd>Backspace</kbd> / <kbd>Ctrl+H</kbd></td><td class="wrap">Delete character back</td></tr>276  <tr><td><kbd>Ctrl+W</kbd> / <kbd>Alt+Backspace</kbd></td><td class="wrap">Delete word back</td></tr>277  <tr><td><kbd>Alt+D</kbd></td><td class="wrap">Delete word forward</td></tr>278  <tr><td><kbd>Ctrl+U</kbd></td><td class="wrap">Delete to line start (or discard the queued steering message when the composer is empty)</td></tr>279  <tr><td><kbd>Ctrl+_</kbd></td><td class="wrap">Undo</td></tr>280  <tr><td><kbd>Tab</kbd></td><td class="wrap">Accept the selected completion</td></tr>281  <tr><td><kbd>Ctrl+G</kbd></td><td class="wrap">Edit the buffer in <code>$EDITOR</code></td></tr>282  <tr><td><kbd>/</kbd> (first char)</td><td class="wrap">Slash palette</td></tr>283  <tr><td><kbd>@</kbd></td><td class="wrap">Fuzzy file-mention search</td></tr>284  <tr><td><kbd>!</kbd> (first char)</td><td class="wrap">Shell mode for one command</td></tr>285</table>286287<h3 id="keys-single">Single-key actions (composer empty)</h3>288<table>289  <tr><th>Key</th><th>Action</th></tr>290  <tr><td><kbd>d</kbd></td><td class="wrap">Print the diff of the most recent edit</td></tr>291  <tr><td><kbd>a</kbd></td><td class="wrap">After shell-mode output: add that output to the agent's context</td></tr>292</table>293294<h3 id="keys-overlays">Overlays and pickers (uniform)</h3>295<table>296  <tr><th>Key</th><th>Action</th></tr>297  <tr><td><kbd>&uarr;</kbd>/<kbd>&darr;</kbd> (<kbd>Ctrl+P</kbd>/<kbd>Ctrl+N</kbd>)</td><td class="wrap">Navigate</td></tr>298  <tr><td>typing</td><td class="wrap">Fuzzy filter</td></tr>299  <tr><td><kbd>Enter</kbd></td><td class="wrap">Select / apply</td></tr>300  <tr><td><kbd>Tab</kbd></td><td class="wrap">Complete without executing (slash palette)</td></tr>301  <tr><td><kbd>Esc</kbd></td><td class="wrap">Close</td></tr>302</table>303304<h3 id="keys-permission">Permission panel</h3>305<table>306  <tr><th>Key</th><th>Action</th></tr>307  <tr><td><kbd>Enter</kbd></td><td class="wrap">Allow once</td></tr>308  <tr><td><kbd>A</kbd></td><td class="wrap">Always allow in this project (persists the shown pattern)</td></tr>309  <tr><td><kbd>Esc</kbd></td><td class="wrap">Deny (with an optional one-line reason)</td></tr>310  <tr><td><kbd>Tab</kbd></td><td class="wrap">Expand details: every capability request, matched rules, resolved paths</td></tr>311</table>312313<h3 id="keys-diff"><code>/diff</code> viewer (alternate screen)</h3>314<table>315  <tr><th>Key</th><th>Action</th></tr>316  <tr><td><kbd>&uarr;&darr;</kbd> / <kbd>j</kbd> <kbd>k</kbd></td><td class="wrap">Scroll</td></tr>317  <tr><td><kbd>PgUp</kbd>/<kbd>PgDn</kbd>, <kbd>Ctrl+U</kbd>/<kbd>Ctrl+D</kbd></td><td class="wrap">Half-page scroll</td></tr>318  <tr><td><kbd>]</kbd> / <kbd>[</kbd></td><td class="wrap">Next / previous file</td></tr>319  <tr><td><kbd>Tab</kbd></td><td class="wrap">File list</td></tr>320  <tr><td><kbd>u</kbd></td><td class="wrap">Toggle unified / side-by-side</td></tr>321  <tr><td><kbd>g</kbd> / <kbd>G</kbd></td><td class="wrap">Top / bottom</td></tr>322  <tr><td><kbd>q</kbd> / <kbd>Esc</kbd></td><td class="wrap">Close, conversation untouched</td></tr>323</table>324325<div class="pager">326  <div><span class="label">Previous</span><a href="/docs/usage.html">&larr; The TUI</a></div>327  <div class="next"><span class="label">Next</span><a href="/docs/tools.html">Tools &rarr;</a></div>328</div>329330</article>331</div></main>332333<footer class="site-footer"><div class="inner">334  <span>KHAELOR — Simon-Pierre Boucher &middot; <a href="mailto:contact@spboucher.ai">contact@spboucher.ai</a></span>335  <span>Anthropic-powered &middot; terminal-native by design</span>336</div></footer>337338</body>339</html>340