MemoryLake
Back to all articles
TutorialNovember 3, 2026·10 min read

Steer or Queue in Codex? Where a Message Typed Mid-Task Lands in the Conversation, and Which One Enter Does (2026)

You give Codex a task, it starts working, and then you remember something: the tests live in a different folder, or you'd rather it not touch the config file. You type it in while Codex is still busy. What happens next depends on whether that message steers the current run or waits in a queue.

OpenAI's documentation defines the two in one line each: "Steer adds the message to the current run. Use it to change direction, add a missing detail, or share new information." And: "Queue saves the message for the next run. Use it for a follow-up that should wait until the current work finishes."

This guide covers what each one does to the conversation, which one Enter does in the CLI, the IDE extension, and the desktop app, how to read the pending-message area in the terminal, and how to queue a message for a session that isn't open. If you want to reset a chat rather than redirect it, see our guide to Codex's /clear and /new.

What steering does

When you steer, your message joins the turn Codex is already working on. Nothing restarts. Codex reads the new instruction as part of the same run and adjusts what it does next.

The CLI documentation describes the key this way: "Press Enter while Codex is working to inject new instructions into the current turn."

Codex's app server, which client apps use to talk to Codex, has a matching method. Its documentation says: "Use turn/steer to append more user input to the active in-flight turn." Two details show what a steer is and isn't. The method "doesn't emit a new turn/started notification", so no new turn begins. And it "doesn't accept turn-level overrides (model, cwd, sandboxPolicy, or outputSchema)." A steer adds words to the current turn. It doesn't change the model or the working directory partway through.

When a steer reaches Codex

A steer doesn't interrupt Codex in the middle of a command. In the terminal, pending steers appear in a preview list under a heading that says they'll be submitted after the next tool call, with a hint showing the key that interrupts and sends them immediately. So the usual path is that Codex finishes the step it's on, then reads your message before deciding on the next one.

There's one timing exception, from Codex's own change history. Pressing Enter while Codex is still streaming its final answer used to be able to leave the session stuck. The fix, merged in February 2026, makes Codex queue the message in that window instead, so it runs after the answer finishes.

What queueing does

A queued message waits. The current run finishes as planned, and your message starts the next turn.

The CLI documentation says: "Press Tab while Codex is working to queue a follow-up prompt, slash command, or shell command for the next turn." You can queue more than one, and they run in order.

Slash commands behave a little differently when queued. "Codex parses queued slash commands when they run, so command menus and errors appear after the current turn finishes." If you queue a command with a typo, you'll find out when its turn comes.

Some commands are meant for a session that's already working. OpenAI's slash command guide says it shows you how to "Steer an active session with commands like /model, /fast, /permissions, /approve, /raw, /agents, /subagents, and /status". The same guide notes that slash completion still works before you queue a command, so you can check the name before pressing Tab. That gives you three tools while Codex works: a steer for words, a queued message for the next step, and a command for settings.

In the terminal, queued messages get their own section in that preview list, separate from pending steers, with a key hint for editing the last one you queued. In the desktop app, OpenAI says "Queued messages appear above the composer, where you can edit, reorder, send, or delete them."

Which one Enter does

This is where people get surprised, because the default depends on where you use Codex.

In the CLI

Enter steers and Tab queues. That has been the default since a February 2026 change that, in its own words, "Promotes the Steer feature from Experimental to Stable and enables it by default." Before that, Enter queued while a task was running. If you learned Codex before then, your habit may still expect the old behavior.

In the IDE extension

The extension defaults the other way. Its setting, chatgpt.followUpQueueMode, has a default of queue, and the reference describes it as a choice between messages that "wait for the next run (queue) or steer the current run (steer)." The extension also maps an older value: "The extension treats the legacy interrupt value as steer." For a single message, Cmd or Ctrl with Shift and Enter does the opposite of your setting.

In the desktop app

The app has a setting for it. OpenAI's settings reference describes a Follow-up behavior option under General, where you choose whether a message sent while Codex works steers the current run or waits for the next run. The prompting guide adds that "The setting also shows the shortcut for using the other behavior for one message without changing your default."

So the same key can mean steer in your terminal and queue in your editor. If a correction you typed seemed to be ignored, check which surface you were in.

What steered conversation means

People search for a steered conversation in Codex because a message they sent mid-task changed what Codex was doing without starting a new turn. That's what steering is. The conversation keeps one turn, with your instruction added partway through.

The open-source code treats it the same way. When Codex builds a recap of a conversation, the code notes that adjacent user messages preserve steering as part of one request, so a steer and the request it modified are read together.

For your context, steering and queueing end up in the same place. Both become part of the conversation Codex reads. The difference is timing: a steer arrives inside the current turn, and a queued message arrives as the next one. Either way, the message counts against the chat's context like anything else you type; our guide to Codex's context left figure explains how that adds up.

Queueing a message from outside the session

Codex also has a command for sending a message to a session you don't have open. The CLI reference describes codex queue as a way to "Queue a text message for an existing session" by its ID or exact name.

A few rules come with it. "Queued messages use the session's model. The command accepts text only." And for a session that isn't loaded: "Add --resume to queue the message and then resume the session if it isn't already loaded." The resume step needs a running local daemon or a remote server. If it fails, "it prints a warning and still exits successfully", so check the session afterward rather than relying on the exit code. The resume option arrived in Codex 0.166.0.

Steering goals and subagents

Long-running work has its own steering options. OpenAI's goal documentation says that in an interactive CLI session you can "Send a follow-up message in the same interactive session to add context or adjust constraints." Our guide to Codex goal mode covers what a goal keeps attached to the task.

For delegated work, OpenAI says you can ask Codex directly to steer a running subagent, stop it, or close completed agent threads. Our guide to Codex subagents explains what each subagent starts with.

What people try first

Pressing Enter in the IDE and expecting a steer. The extension's default is queue. Your message waits for the next run unless you change the setting or use the one-message shortcut.

Expecting a steer to stop the current command. Pending steers go in after the next tool call. To send immediately, use the interrupt key shown in the hint.

Steering a model change. A steer can't carry turn-level overrides. Change the model with a command, or queue it for the next turn.

Queueing a slash command and assuming it ran. Queued commands are parsed when their turn comes, so errors appear later.

Trusting the exit code of codex queue with --resume. It exits successfully even if the resume fails. Check the session.

The Fix: Decide where each kind of instruction should go

Step 1: Pick a default per surface

Decide whether you want Enter to steer or queue, and set the IDE extension and desktop app to match how you use the CLI. Learn the one-message shortcut for the other behavior.

Step 2: Steer for corrections, queue for new work

Use a steer when Codex is heading the wrong way on the current task. Queue anything that's a separate step, like running checks after the change or writing a summary. If a run has already gone too far, the CLI lets you press Escape twice with an empty composer to edit your previous message and fork the chat from that point; our guide to forking a Codex chat covers the options.

Step 3: Move repeated steers out of the chat

If you find yourself steering the same correction in every session, like where tests live or which files are off-limits, it belongs in your project's AGENTS.md or in written notes you maintain, not in a message you retype.

Setting this up in MemoryLake

Steering fixes the current run. The corrections you make often are a different matter: they're facts about your project, and typing them again in every session is how they get missed.

MemoryLake is a memory layer for keeping those facts in one place you maintain, available to the assistants you connect, such as ChatGPT, Claude Code, and Codex.

You write the entries yourself, in your own words. Nothing is read out of, written to, or deleted from your Codex sessions, their transcripts, your AGENTS.md files, your Codex memories, or any vendor's store. Steering and queueing keep working the way OpenAI describes them.

Step 1: Create an API key

Sign in and generate a key from the dashboard. The key belongs to your MemoryLake workspace and is separate from your ChatGPT and Codex accounts.

The MemoryLake console showing the API keys screen, where a new key is created and copied for use in an agent
The MemoryLake console showing the API keys screen, where a new key is created and copied for use in an agent

Step 2: Upload your first memories

Start with the repeated corrections from Step 3 of the fix: where things live, what not to touch, and the conventions you keep restating. One point per entry.

The MemoryLake workspace with the first documents uploaded, listing each file as it becomes searchable memory
The MemoryLake workspace with the first documents uploaded, listing each file as it becomes searchable memory

Step 3: Connect your AI & agents

Connect the assistants you use. If you work across tools, our guide to using Claude Code and Codex together covers how to keep shared context in one place.

The MemoryLake integrations screen listing the AI clients and agent frameworks that can be connected to the memory layer
The MemoryLake integrations screen listing the AI clients and agent frameworks that can be connected to the memory layer

What this changes in practice

The first difference is fewer surprises from Enter. You know which surface steers and which queues.

The second is cleaner turns. Corrections go into the run they're meant for, and separate work waits its turn.

The third is less steering overall. The corrections you used to repeat are already written down, so Codex starts with them.

Best practices for steering and queueing

Check your surface's default. The CLI steers on Enter. The IDE extension queues.

Steer early. A correction before the next step saves undoing it later.

Queue separate tasks. Checks, summaries, and follow-ups can wait for the next turn.

Watch the pending area. It shows what's waiting to be steered and what's queued.

Don't steer settings. Model and directory changes need commands, not steers.

Verify codex queue deliveries. A failed resume still exits successfully.

Write down repeated corrections. In AGENTS.md or notes you maintain.

Conclusion

In Codex, a steer adds your message to the run that's already going, and a queued message waits to start the next one. In the CLI, Enter steers and Tab queues; the IDE extension defaults to queue; the desktop app lets you choose. Pending steers go in after the next tool call, and both kinds of message become part of the conversation Codex reads.

Steer for corrections and queue for separate work. When the same correction keeps coming up, move it out of the chat and into instructions you maintain.

Frequently asked questions

What is the difference between steer and queue in Codex?

OpenAI says steer adds the message to the current run, while queue saves it for the next run. Steer is for changing direction; queue is for follow-ups that should wait.

Does Enter steer or queue in Codex?

In the CLI, Enter steers and Tab queues. The IDE extension defaults to queue, and the desktop app has a setting for it.

What does steered conversation mean in Codex?

It describes a conversation where you sent a message while Codex was working and it joined the current turn instead of starting a new one.

Does a steer interrupt the command Codex is running?

Not by default. In the terminal, pending steers are submitted after the next tool call, and a hint shows the key to interrupt and send immediately.

Can I change the model with a steer?

No. OpenAI's app-server documentation says a steer doesn't accept turn-level overrides such as the model or working directory.

How do I send a message to a Codex session that isn't open?

Use codex queue with the session's ID or exact name. Add --resume to load the session after queueing, which needs a running local daemon or a remote server.