OMP Docs
Get started

Using omp

Run a complete interactive session: write a request, follow the work, answer decisions, steer or stop it, review changes, and resume safely.

Bare omp opens the interactive terminal UI. This is the normal place to do day-to-day work: describe an outcome in ordinary language, let omp inspect and change the project, review what it did, then refine the result in the same conversation.

New here?

Finish Quickstart first, then send one bounded request in a project you know.

Start in your project

cd my-project
omp

Send one bounded request

Find the refresh-token race, fix only the implementation and its focused tests, show me the diff, and run those tests. Do not commit.

Press Enter. You do not need a slash command or special prompt format for normal work.

A complete task, turn by turn

State the outcome and boundaries

Name the bug or feature, important paths, anything that must not change, and the check that should pass.

Let omp investigate

It will narrate progress and show each read, command, or change as a card in the transcript.

Intervene when needed

Send a steering message while it works, answer a question, or reject an unsafe action.

Review evidence

Expand tool cards and diffs. Check the changed paths, command exit status, test result, and final explanation.

Refine in the same session

Say what is wrong or what remains: "Keep the public signature," "Add the missing boundary case," or "Revert the change to cache.ts."

Changes apply immediately

File changes are applied to your working tree as omp works. They are not committed unless you ask for a commit. Your editor, git diff, and the transcript remain the final review surfaces.

Read the screen

The exact colors and status-line layout depend on your theme and settings, but the interactive screen has three working regions:

Your messages, assistant text and thinking, notices, questions, and tool cards. New activity appears at the bottom. A tool card shows what is pending, succeeded, failed, or was cancelled; edit cards include the affected path and a diff summary.

The status line is not decoration: check it before assuming omp is in the wrong directory, using the wrong model, allowed to write, or out of context. Its presets and segments can be changed in /settings; see Settings for the complete reference.

Compose, attach, and submit

You want to…Do this
Send a promptPress Enter.
Insert a newlinePress Shift+Enter, Ctrl+J, or Alt+Enter. Windows Terminal users should prefer Alt+Enter.
Mention a project fileType @, continue typing to fuzzy-search, then select the path. omp reads an @path mention into the turn automatically.
Complete a pathType part of a relative, parent, home, or absolute path and use the completion list. Tab accepts the highlighted completion.
Attach an imagePaste with Ctrl+V, or drag or paste an image path. A chip in the composer confirms a pasted attachment. You can also mention @path/to/image.png; omp reads that file with the turn.
Attach pasted textPaste it normally. Multi-line or large pastes can collapse into a numbered paste chip so the editor stays readable; deleting the chip removes that attachment.
Edit a long draft externallyPress Ctrl+G to open $VISUAL, falling back to $EDITOR, then save and close it to return the text to omp.
Recover an earlier promptPress Ctrl+R to search prompt history.

Multiline input by platform

Press Shift+Enter or Ctrl+J to insert a newline without submitting the prompt.

You can combine prose, @file mentions, pasted text, and images in one prompt. Say what each attachment is for; a path by itself supplies context but not intent. For example:

Compare @src/auth/refresh.ts with @test/auth/refresh.test.ts. The attached screenshot is the production error. Fix the race without changing the token format, then run the focused test.

Image input is normalized and resized by default. When the active model cannot accept images directly, omp normally asks a configured vision-capable model for a description instead. Image behavior is configurable under Model → Vision and Appearance → Images in /settings.

Follow the work and review cards

Tool cards are the audit trail between your prompt and the final answer. Read the title first: it identifies the action, command, path, or remote resource. Then check its state and result.

  • Press Ctrl + O to expand or collapse tool output. Use it for a truncated command transcript or the complete visible diff.
  • Press Ctrl + Shift + O to hide or show tool activity when you want a prose-only view.
  • A successful card means that action completed, not that the whole task is correct. Check the final test or verification card separately.
  • A failed or cancelled card remains useful evidence. Read the error, then tell omp whether to retry, use another approach, or stop.
  • For edits, inspect the path and additions/removals. Ask for a correction immediately if the scope or behavior is wrong.

For a deeper file-change workflow and safety settings, see Working with files.

Answer approvals and questions

If your approval mode or a per-tool policy requires confirmation, omp pauses before the action and shows what it wants to do. Read the command, target, diff preview, and reason rather than approving from the title alone. Select the offered allow or reject choice with the picker keys shown on screen. Escape cancels the prompt; no approval is inferred from dismissal.

When omp needs product input, it may show a question dialog:

  • Use Up / Down to move and Enter to choose a single answer.
  • For a multi-select question, press Space to toggle choices, then Enter to advance.
  • Use the Other row to type a custom answer. Press n on a row when the dialog offers an explanatory note.
  • For several questions, Tab, Shift + Tab, or Left / Right changes tabs; review and submit on the final tab.
  • Press Escape to cancel rather than guess. You can then explain the missing constraint in the composer.

Yolo mode skips prompts

The default Yolo approval mode permits normal read, write, and execution actions, so you may not see approval prompts. Choose Always ask in /settings under Interaction → Approvals, or launch with omp --approval-mode always-ask, when you want confirmation before writes and commands.

Steer, queue, stop, and continue

You can type while omp is working. The submit key decides whether the message should affect the current turn or wait for the next one.

ActionDefault keyUse it when…
Steer the active turnEnterThe current approach needs a correction: “Do not change the schema,” “Use the existing helper,” or “Stop after investigation.”
Queue a follow-upCtrl+Q or Ctrl+EnterThe current task should finish first: “After that, explain the migration risk.”
Return queued input to the composerAlt+Up or Shift+UpYou queued the wrong text or want to edit pending messages.
Interrupt the active operationEscapeA turn, local shell/Python escape, retry, or other active operation should stop.
Continue the prior intentSend . or cYou interrupted at the right point and want omp to carry on without restating the task.
Retry the last failed assistant turnAlt+RA provider or turn failed and the same request should be attempted again.

A steering message is for now; a follow-up is for after the agent yields. The pending-message strip shows what is queued. The steeringMode, followUpMode, and interruptMode settings control whether queued messages drain together or one at a time and whether steering interrupts immediately or waits.

Escape is focus-sensitive. If autocomplete or a picker is open, the first press dismisses that surface. In the main composer it interrupts active work. It does not exit omp. In Loop mode it stops the current iteration while leaving Loop enabled; run /loop again to disable Loop. See Run modes for the exact mode behavior.

Choose the model and thinking level

Use the defaults until a task gives you a reason to change them. The active selection is always visible in the status line.

ControlResult
/model or Alt+MOpen the model hub and inspect or change persistent model-role assignments.
/switch or Alt+PChoose a temporary model for the current session without changing the saved role assignment.
Ctrl+P / Ctrl+Shift+PCycle forward or backward through the configured role-model order.
Shift+TabCycle the thinking effort supported by the active model, including Auto when configured.
Ctrl+TShow or hide thinking blocks in the transcript. This changes visibility, not the reasoning effort.

A higher thinking level can improve difficult reasoning but usually increases latency and token use. A model that does not support configurable thinking will say so instead of changing. When Auto is selected, the status line shows the resolved effort once the turn is classified.

See Model roles for persistent assignments, the quick-cycle order, and per-session overrides.

Interactive work modes change how a turn behaves, not how you talk to omp. The status line tells you when one is active:

  • Plan explores and proposes without changing the working tree until you approve it. See Plan mode.
  • Goal, Vibe, Prewalk, Loop, Fast, and related controls are specialized workflows. Start with ordinary interactive turns and choose them deliberately from Run modes.
  • If omp unexpectedly refuses to edit or keeps going after a turn, check the mode segment first. Leave or disable that mode with its slash command rather than fighting it with repeated prompts.

Run a local command yourself

A leading escape runs directly from the composer without asking the model to choose or invoke anything:

! git status
!! git diff --stat
$ print(2 + 2)
$$ import os; print(os.getcwd())
PrefixBehavior
! commandRun the command in your user shell, stream the result in the TUI, and include it in conversation context.
!! commandRun and display it, but exclude its output from model context.
$ codeRun Python in the session's shared Python kernel and include the result in context. A space after $ is required, so prose such as $HOME remains prose.
$$ codeRun Python and display it without adding the output to model context.

Local execution and permissions

Commands prefixed with ! or $ execute immediately with your local user permissions and can change files on disk. The !! and $$ prefixes exclude command output from model context, but they do not provide a security sandbox.

Press Escape to cancel a running shell or Python escape. A successful ! cd path also moves omp's interactive working directory.

Move around sessions without losing work

You do not need to exit to change conversation state:

CommandWhat it is for
/treeMove to an earlier message or another branch in the current session. Use it when a turn went sideways.
/branchStart an alternative thread from an earlier message in the same session file.
/forkClone the conversation into a new session file before trying a separate approach.
/resumeOpen the session picker for this project.
/newStart a fresh session while keeping the current one on disk.
/session infoShow the current session id, path, lineage, and statistics.
/compactSummarize older active context when the context meter is high while retaining navigable history.

The tree and session pickers display their own navigation hints. Escape clears an active search first, then closes the picker. Full branching, resume, export, and handoff behavior lives on Sessions.

Exit and recover

Use /exit, /quit, /q, or Ctrl+D for an orderly exit. Ctrl+D saves a non-empty unsent composer draft; resuming that session restores it once. Ctrl+C clears the composer, and a second press within half a second exits, so prefer Ctrl+D when you mean “leave and keep my draft.”

Draft preservation

Ctrl+D saves your unsent draft for the next session. Pressing Ctrl+C twice in rapid succession exits immediately and discards uncommitted composer input.

From the same project directory, restart the most recent session:

omp -c

Use omp -r for the project session picker. This is also the recovery path after SSH or terminal disconnects; the persisted transcript is replayed, including an in-flight tail when one is still being written.

Common stuck states

What you seeRecovery
Keystrokes move a list instead of editing the promptA picker, autocomplete menu, or question has focus. Read its footer or press Escape to close it.
A queued message is wrongPress Alt+Up or Shift+Up, edit the restored text, and submit again.
The agent is taking the wrong pathSend a concrete steering message with Enter. If continuing would be harmful, press Escape, review what already changed, then give the correction.
You stopped a good turn by accidentSend . or c to continue the previous intent.
A response failedRead the error card, then press Alt+R to retry or change the model with /model.
Tool output or a diff looks incompletePress Ctrl+O to expand it.
The terminal display is garbled after resize or reconnectPress Alt+L to reset and repaint the display.
omp will inspect but not editCheck for Plan mode and the approval prompt or policy shown on screen. Approve the action, leave Plan, or adjust Interaction → Approvals deliberately.
Context use is near its limitFinish the current thought, then run /compact. See Memory and compaction.
The terminal disconnected or omp exitedReturn to the project directory and run omp -c; use omp -r if it was not the most recent project session.
You cannot remember a shortcutRun /hotkeys, then see Keybindings for every action and remapping syntax.

Keep the reference pages nearby


Source: omp.sh — MIT, Stencil Labs. Initially imported on 2026-10-03; updates via automatic sync.

OMP Docs· always in sync with upstream
oh-my-piomp.sh/docsContent MIT · Stencil Labs