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.
Quickstart
Install omp and run your first session
Slash commands
Every built-in command and alias
Keybindings
Every default chord and remapping
Sessions
Resume, branch, fork, and sharing
Start in your project
cd my-project
ompSend 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 prompt | Press Enter. |
| Insert a newline | Press Shift+Enter, Ctrl+J, or Alt+Enter. Windows Terminal users should prefer Alt+Enter. |
| Mention a project file | Type @, continue typing to fuzzy-search, then select the path. omp reads an @path mention into the turn automatically. |
| Complete a path | Type part of a relative, parent, home, or absolute path and use the completion list. Tab accepts the highlighted completion. |
| Attach an image | Paste 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 text | Paste 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 externally | Press Ctrl+G to open $VISUAL, falling back to $EDITOR, then save and close it to return the text to omp. |
| Recover an earlier prompt | Press 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+Oto expand or collapse tool output. Use it for a truncated command transcript or the complete visible diff. - Press
Ctrl+Shift+Oto 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/Downto move andEnterto choose a single answer. - For a multi-select question, press
Spaceto toggle choices, thenEnterto advance. - Use the Other row to type a custom answer. Press
non a row when the dialog offers an explanatory note. - For several questions,
Tab,Shift+Tab, orLeft/Rightchanges tabs; review and submit on the final tab. - Press
Escapeto 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.
| Action | Default key | Use it when… |
|---|---|---|
| Steer the active turn | Enter | The current approach needs a correction: “Do not change the schema,” “Use the existing helper,” or “Stop after investigation.” |
| Queue a follow-up | Ctrl+Q or Ctrl+Enter | The current task should finish first: “After that, explain the migration risk.” |
| Return queued input to the composer | Alt+Up or Shift+Up | You queued the wrong text or want to edit pending messages. |
| Interrupt the active operation | Escape | A turn, local shell/Python escape, retry, or other active operation should stop. |
| Continue the prior intent | Send . or c | You interrupted at the right point and want omp to carry on without restating the task. |
| Retry the last failed assistant turn | Alt+R | A 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.
| Control | Result |
|---|---|
/model or Alt+M | Open the model hub and inspect or change persistent model-role assignments. |
/switch or Alt+P | Choose a temporary model for the current session without changing the saved role assignment. |
Ctrl+P / Ctrl+Shift+P | Cycle forward or backward through the configured role-model order. |
Shift+Tab | Cycle the thinking effort supported by the active model, including Auto when configured. |
Ctrl+T | Show 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())| Prefix | Behavior |
|---|---|
! command | Run the command in your user shell, stream the result in the TUI, and include it in conversation context. |
!! command | Run and display it, but exclude its output from model context. |
$ code | Run 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. |
$$ code | Run 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:
| Command | What it is for |
|---|---|
/tree | Move to an earlier message or another branch in the current session. Use it when a turn went sideways. |
/branch | Start an alternative thread from an earlier message in the same session file. |
/fork | Clone the conversation into a new session file before trying a separate approach. |
/resume | Open the session picker for this project. |
/new | Start a fresh session while keeping the current one on disk. |
/session info | Show the current session id, path, lineage, and statistics. |
/compact | Summarize 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 -cUse 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 see | Recovery |
|---|---|
| Keystrokes move a list instead of editing the prompt | A picker, autocomplete menu, or question has focus. Read its footer or press Escape to close it. |
| A queued message is wrong | Press Alt+Up or Shift+Up, edit the restored text, and submit again. |
| The agent is taking the wrong path | Send 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 accident | Send . or c to continue the previous intent. |
| A response failed | Read the error card, then press Alt+R to retry or change the model with /model. |
| Tool output or a diff looks incomplete | Press Ctrl+O to expand it. |
| The terminal display is garbled after resize or reconnect | Press Alt+L to reset and repaint the display. |
| omp will inspect but not edit | Check 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 limit | Finish the current thought, then run /compact. See Memory and compaction. |
| The terminal disconnected or omp exited | Return to the project directory and run omp -c; use omp -r if it was not the most recent project session. |
| You cannot remember a shortcut | Run /hotkeys, then see Keybindings for every action and remapping syntax. |
Keep the reference pages nearby
Slash commands
Every built-in command and alias
Keybindings
Every default chord and remapping
Settings
Configuration and every option
Sessions
Resume, branch, fork, and sharing
Source: omp.sh — MIT, Stencil Labs. Initially imported on 2026-10-03; updates via automatic sync.
Get started
Reference