BTW Side Questions: Ask Quick Questions Without History

Learn how to use /btw to ask ephemeral side questions about your current session without storing them in conversation history. Useful for developers who need quick context without disrupting the main workflow.

Read this when

  • You want to ask a quick side question about the current session
  • You are implementing or debugging BTW behavior across clients

/btw (alias /side) lets you ask a quick side question about the current session without storing it in conversation history. It is based on Claude Code's /btw, reworked for OpenClaw's Gateway and multi-channel architecture.

/btw what changed?
/side what does this error mean?

What it does

  1. Takes a snapshot of the current session as background context (including any in-flight main-run prompt).
  2. Runs a separate, one-shot side query that tells the model to answer only the side question and not continue or redirect the main task.
  3. Returns the answer as a live side result, not a standard assistant message.
  4. Never writes the question or answer to session history or chat.history.

If a main run is active, it stays untouched.

For Codex harness sessions, BTW forks the active Codex app-server thread into a temporary child thread instead of making a separate provider call. This preserves Codex OAuth and native tool/thread behavior, and the forked thread keeps the parent thread's current approval policy, sandbox, and native tool surface. The forked thread receives a boundary prompt that tells the model everything before it is inherited reference context (not active instructions) and only messages after the boundary are live. /btw requires an existing Codex thread; send a normal message first.

For CLI runtime aliases, BTW calls the owning CLI backend in one-shot side-question mode: it seeds sanitized conversation context into a fresh CLI invocation with tool bundling and reusable session state disabled, and adds any no-resume/no-tools flags the backend supports. Direct (non-CLI) runtimes use a direct one-shot provider call instead.

What it does not do

/btw does not create a durable session, continue the unfinished main task, persist question/answer data to transcript history, or survive a reload.

Delivery model

Normal assistant chat uses the Gateway chat event. BTW uses a separate chat.side_result event so clients cannot mistake it for regular conversation history. Because it is not replayed from chat.history, it disappears after reload.

Surface behavior

SurfaceBehavior
TUIRendered inline in the chat log, visibly distinct from a normal reply, dismissible with Enter or Esc.
External channelsDelivered as a clearly labeled one-off reply (Telegram, WhatsApp, Discord have no local ephemeral overlay).
Control UI / webRendered as a floating "Side chat" panel pinned to the thread. Answers accumulate as turns and a "Follow up" input asks the next side question. Close (Esc or the X) keeps the conversation and reopens on the next answer; the trash button discards it and stops a pending run.

Selection popup (Control UI)

Highlighting text inside a chat message in the Control UI opens a small selection popup with two actions:

  • More details immediately sends an implicit /btw question asking the model to explain the highlighted text in the context of the current session. The answer arrives in the floating side chat panel.
  • Ask in side chat pre-fills the composer with a /btw draft quoting the highlighted text so you can type your own question about it.

Both actions follow normal /btw semantics: the question and answer stay out of session history and the main run is left untouched.

When to use it

Use /btw for a quick clarification, a factual side answer while a long run is still in progress, or a temporary answer that should not enter future session context.

/btw what file are we editing?
/btw summarize the current task in one sentence
/btw what is 17 * 19?

For anything you want to become part of the session's future working context, ask normally in the main session instead.

  • Slash commands, Native command catalog and chat directives.

  • Thinking levels, Reasoning effort levels for the side-question model call.

  • Session, Session keys, history, and persistence semantics.

  • Steer command, Inject a steering message into the active run without ending it.