Skip to main content
You talk to o4 through the prompt box at the bottom of the screen. This page covers what you can put in a prompt: file references, images, several lines of text, and messages you send while the agent is still working. It also covers prompt history, suggested prompts, and /hey, a side chat for quick questions.

Send a prompt

Type your request and press Enter. o4 works on it until it finishes, then waits for the next prompt. Good prompts say what you want and where to look:
Three other kinds of input start with a special character: For example, !git status shows the status and gives the output to the model for your next prompt. You can’t run a ! command while o4 is working on a turn; o4 shows Shell commands are disabled while a task is in progress. A ! command runs under the current sandbox tier (see Sandbox) and stops after 120 seconds. It doesn’t go through the sandbox’s egress proxy, so in guarded and airlock it has no network access, unless a [sandbox] table without allowedDomains lifts the limit.

Reference files with @

Type @ to open a file picker. Keep typing to filter it, use Up and Down to move through it, then press Tab or Enter to insert the highlighted path. Esc closes the picker. The prompt then contains @ followed by the path relative to your working directory:
The path goes into the prompt as text; o4 doesn’t paste the file’s contents into it. The model reads the file with its tools when it needs to. You can also type a path with no @, and the model reads it the same way. The picker:
  • Lists files only, not folders. To point at a folder, type its path.
  • Skips files ignored by your .gitignore, and hidden files and folders, whose names start with a dot.
  • Lists the first 1,000 files it finds. Typing filters only those, so in a larger project a file past the limit never appears; type its path yourself.
  • Scans the project in the background when you type @, and shows Scanning... until the scan finishes. It reuses the list for 30 seconds, so a file created since then may be missing until the next scan.

Attach images

To attach an image, press Ctrl+V while the image is on your clipboard. On macOS, o4 reads PNG, TIFF and JPEG images from the clipboard, including screenshots. On Linux, it uses xclip or wl-paste, so one of them must be installed. You can also drag an image file into the terminal or paste its path. If the pasted text is only paths to image files (.png, .jpg, .jpeg, .gif, .webp, .tif or .tiff), o4 attaches the images instead of inserting the text. Paths with spaces work when they’re quoted or escaped the way your terminal drops them, and so do file:// URLs. o4 checks the file’s contents, not just its name: a file that isn’t really a PNG, JPEG, GIF, WebP or TIFF image, or is larger than 50 MB, isn’t attached, and its path is pasted as ordinary text. Attached images appear above the prompt, each with its number, type, size and dimensions, for example [#1 image/png 48213B 1280x720]. To remove one, clear the prompt and press Up to select the last image. Up and Down move between images, Backspace or Delete removes the selected one, and Esc leaves image selection.
Not every model accepts images. If the current model doesn’t, o4 keeps your prompt and images and doesn’t send them. Switch to a model that accepts images with /model, or remove the images. See Choosing a model.

Write several lines

Enter sends the prompt. To start a new line instead, press Shift+Enter. If your terminal doesn’t pass Shift+Enter through to o4, press Ctrl+J instead, once you’ve typed something on the first line. To write a long prompt in your own editor, press Ctrl+G. o4 opens the current prompt in $EDITOR (or $VISUAL, or vi if neither is set). When the editor exits, the saved text replaces what was in the prompt box; it isn’t sent until you press Enter. o4 runs the variable’s value as a single program name, so it must not contain arguments: EDITOR=nano works, EDITOR="code --wait" doesn’t. When you paste a large block into an empty prompt (1,000 characters or more, or 6 lines or more), the prompt box shows a single line such as Pasted content (2,340 chars) instead of the whole text. The full text is still sent. Backspace removes the whole paste, and typing a character shows the full text again so you can edit it.

Send messages while o4 is working

You don’t have to wait for o4 to finish. There are two ways to send a message during a turn: Queue a message when you have the next task ready. Steer when the agent is going the wrong way and you want to correct it now, for example “use the existing retry helper instead of writing a new one.” The number of waiting messages appears next to the working indicator, or in the row below the prompt box when o4 is idle, for example 1 steer · 2 queued. To manage the queue:
  • Alt+Q puts the newest queued message back in the prompt box so you can change it. Press Enter to save your change or Esc to cancel.
  • If you interrupt a turn with Esc or a turn fails, o4 holds the queue instead of sending the next message, and the count shows (held). Press Alt+G to start it again.
  • A message that can’t be delivered, such as a steer that arrives after its turn has ended, is counted as undelivered, and a notice in the transcript gives the reason: ⚠ "<message>" not delivered — <reason>.
Queued messages can carry images, as long as the current model accepts them.
To put a prompt aside without sending it, press Ctrl+S. The prompt box is cleared. Press Ctrl+S again with an empty prompt box to bring back the most recent one. /stash list shows everything you’ve put aside, numbered from 0, and /stash <n> brings back prompt n. Stashed prompts last until you quit o4.

Prompt history

Press Up in an empty prompt box to go back through prompts you’ve sent, and Down to come forward again. Press Ctrl+R to search your history: type part of an old prompt, press Ctrl+R again to go to the next match, and press Enter to put it in the prompt box. Esc cancels the search and brings back what you had typed. o4 keeps your last 100 prompts in ~/.o4/prompt_history.json, so your history carries over from one session to the next. Slash commands and ! commands are saved there too.

Suggested prompts

o4 can suggest what to type next. Suggestions are off by default; turn on Suggestions on the General tab of /config (see Suggestions and notifications). When they’re on, o4 shows two kinds:
  • A Suggestions box above the prompt with up to two numbered prompts. At the start of a session they’re based on uncommitted changes in git, such as Lock file updated. Commit Cargo.lock?, and on failures from the last test_run; after each turn, they’re based on the model’s reply. Press 1 or 2 to pick one, then Enter or Tab on an empty prompt to send it. Esc or typing hides them.
  • A dimmed hint in the empty prompt box after a turn, ending in [Tab], such as Fix this error after a tool failed. Press Enter on the empty prompt to send the hint as it is, or Tab to put it in the prompt box so you can edit it first. Typing hides it.
If action chips are showing below the reply, Tab moves through the chips first. Press Esc to hide the chips, then Tab reaches the suggestion.

Ask a quick side question

/hey opens a small side chat below the conversation. Use it for a question that has nothing to do with the task, such as how a shell command works, when you don’t want it in the agent’s context.
The side chat:
  • Doesn’t see your conversation, and nothing from it goes into the main conversation.
  • Can’t use tools, so it can’t read your files or run commands.
  • Uses the current model and reasoning level. Its cost is included in /cost as a separate Side chat cost line.
  • Works while the agent is busy with a turn, but doesn’t open while an approval prompt is waiting for you.
While the side chat is open, type a question and press Enter to send it; Up and Down scroll the answers. Once there’s an answer, two letters act as shortcuts instead of text: y copies the last question and answer, and f closes the side chat and sends them to the main conversation as a new prompt. Esc closes the side chat. Its history stays until you quit o4, so /hey opens it again where you left off.

Ask other models with ^model mentions

Start a prompt with ^ and a model ID to send it to a different model, or to several models one after another. Type ^ to pick from the models you can use now.
  • The mentions must come first in the prompt. A ^ later in the text is ordinary text.
  • A bare model ID such as ^gpt-5.5 works when only one provider you’ve set up offers it. If more than one does, write provider:model, as in the example.
  • Only models you can use now are accepted. If a mention doesn’t match one, o4 keeps your prompt, shows the error, and suggests close matches.
  • You can mention up to 4 models in one prompt. They answer one at a time, in the order you wrote them.
  • Mentioned models have the same tools as a normal turn, including the shell, file edits and network access, under your usual permission rules. Each model is told that the others share the workspace.
  • Mentioned models see the conversation so far. Before o4 sends it to a provider other than the one you’re already using, it asks: Allow once, Allow for this session, or Deny.
  • To start a prompt with a literal ^, type ^^.

Panels of two or more models

With two or more models, the prompt starts a discussion. Each model answers in turn, then they go around again, for 3 rounds per message, and each reply sees everything said before it. The progress line shows which model is answering, as in panel 2/2 (round 1/3): openai:gpt-5.5. A model that fails drops out of the later rounds, and the discussion stops when fewer than two models are left. Press Esc to stop the remaining rounds. To change the number of rounds, set panel_rounds in ~/.o4/settings.json; 1 gives one answer per model. After a panel starts, o4 shows Panel on: <models>. Plain messages go to every model; /panel off to stop. Your next plain messages go to the same models, so you can steer the discussion without typing the mentions again. The status bar shows PANEL and the models.
  • /panel shows the models, as in Panel on: anthropic:claude-sonnet-4-6, openai:gpt-5.5 (3 rounds per message). /panel off to stop., or No panel is on.
  • /panel off ends the panel, and plain messages go to your usual model again. /clear, or mentioning a different set of models, also ends it.
  • A single ^model is a one-off: the next plain message goes to your usual model.
You can’t queue a prompt with model mentions. Wait for the current turn and any queued messages to finish first; otherwise o4 keeps your draft and shows Panel requests cannot be queued. The same goes for a plain message while a panel is discussing: o4 keeps your draft and shows The panel is still discussing. Send this when it finishes, press Esc to stop it, or /panel off to talk to your usual model. Attached images go to every mentioned model, so each of them must accept images. Model mentions don’t work in print mode.