woopcode docs
v1.0.0 GitHub

Keyboard

At the prompt#

Key Action
Enter Send the prompt
Tab Switch between Build and Plan
Scroll the conversation a line at a time
PgUp PgDn Scroll a screen at a time
Home Jump to the start of the conversation
End Jump back to the latest output

The arrow keys scroll rather than recall: there is no prompt history, so does not bring back what you typed last.

Tab is not slash completion — Enter already does that from the highlighted row. The composer changes colour and the caret follows, so the mode is visible without looking anywhere else.

Completing a slash command#

Typing / opens the list of matching commands, and while that list is showing the arrow keys belong to it rather than to the conversation.

Key Action
Move through the matches
Enter Complete the prompt to the selected command
Enter again Run it

The first Enter completes rather than runs, so /appr + Enter becomes /approval and waits. Typing a command in full skips that step — the list has nothing left to complete, so Enter runs it.

Reviewing a diff#

An edit to an existing file pauses on a diff. It shares the screen with the conversation rather than covering it.

Key Action
Enter Apply the edit
Esc Reject it
Scroll a line at a time
PgUp PgDn Scroll a screen at a time
Home Jump to the top of the diff
End Jump to the bottom

Approving a command#

A shell command that needs asking opens a dialog of its own, with the command as it will be run and the reason it stopped.

Key Action
Enter or A Run it
Esc or R Refuse, and tell the agent so

Which commands stop here at all is the approval mode, not this dialog.

Answering a question#

The agent can ask you something mid-turn. Questions arrive as a set and are answered one at a time.

Key Action
Enter Submit this answer and move to the next
Esc Cancel the whole set

Pickers#

/models, /approval and /resume open a picker. /provider does not — it prints the configured providers as text.

Key Action
Move the selection
Enter Choose it, and save
Esc Close without changing anything
CtrlA Session picker only: widen to every project on this machine

They differ in one way: the model and session pickers have a search field, so typing narrows the list. The approval picker has a short fixed list and no search, so typing does nothing there.

The session picker starts scoped to the current project, which is what you almost always want. CtrlA is also the only way to reach history migrated from a version before sessions existed, which belongs to no project.

Ctrl+C#

CtrlC means different things depending on what the session is doing, and the order is deliberate:

Situation What it does
A turn is running Cancels the turn — including one parked on an approval
A window is open, nothing running Closes the window
Nothing running, no window Exits Woopcode

Stopping the agent outranks closing the window waiting on it. A dialog open mid-turn is the agent asking a question, so cancelling the turn is what you mean; the dialog comes down on the way out.

With nothing running, one press closes the window and a second exits. Quitting the whole session on the first press would be a surprising amount of destruction for one keystroke.

On a short terminal#

Every dialog prints its keys along the bottom, and that row is the first thing dropped when the window is too short to hold both it and the thing being decided. The keys still work — this page is where they live when the hint is gone.

See also#

Added in woopcode@0.6.0