Need to ask a question mid-task? /btw answers it right now, without interrupting


You know this moment: Hermes is halfway through a long task — refactoring a codebase, reorganizing a repo, babysitting a deploy — and a related question pops into your head: “which file was that error in again?” Your options used to be equally bad: interrupt the agent and make it re-focus, or open a fresh session that has zero memory of what’s happening. Both hurt. PR #97937 (merged August 29, with follow-up #97974) turns the third path into a built-in command: /btw <question> answers your side question right now, using the full context of the current conversation, without stopping the task. The same change retires /background and promotes /bg to the canonical background-task command — /btw is no longer just its alias.

Why it used to be so awkward

/bg and /btw were both aliases of /background: “send this sentence to a background session and run it.” That sounds fine until you hit the fatal flaw — the background session is brand new and knows nothing about your current context.

So the classic usage collapsed:

/btw which file was that error in?

The context-less background agent could only reply “I don’t know what error you mean” — or make you paste the context in. The whole point of a side question — borrow the current conversation’s context for a quick answer — never materialized.

How /btw works now

The core idea: the question never enters the main session. It’s answered “off to the side,” using a snapshot of the main session. The implementation (agent/side_question.py) has two paths, chosen automatically:

Path one: a cache-parity fork (preferred). If the current session’s agent is still alive, /btw builds a “cache-parity fork” — the same mechanism the background self-improvement review uses. The fork inherits the parent’s runtime, a byte-identical system prompt and tool list, and the shared session_id, then replays the conversation snapshot verbatim. Because the provider prefix cache is already warm for that exact replay, the side answer sees the full, untruncated conversation at cache-read prices. Every tool call is denied at dispatch (empty thread whitelist), persistence is fully detached — no state.db writes, no session rotation, no external memory hooks. Usage is attributed to the parent session.

Path two: a one-shot digest (fallback). If the session’s agent has been evicted (e.g. the gateway dropped the cached agent — the provider cache is cold there anyway), it degrades to rendering a newest-biased plain-text digest of the conversation and answering through a one-shot auxiliary call. The digest excludes the system prompt and summarizes tool calls and results.

On both paths, the main session’s history, role alternation, and prompt cache are untouched by construction — that’s the hard constraint of the design.

How to use it

Available in the CLI, the TUI, and on gateway platforms (Telegram, Discord, Slack, …) — and it works while the agent is busy (busy_policy="dispatch", so you can interject mid-run):

# Task running, sudden question
/btw which file was that error in?
→ /btw answers with the full conversation context: it's in src/utils/parser.py, line 42 …

# A background question about the current task
/btw what approach did we settle on for retries?

Want a different model to answer side questions? There’s a dedicated auxiliary task setting:

auxiliary:
  side_question:
    provider: anthropic
    model: claude-sonnet-4-5

Without it, the main model is used. Note: a different model means a cold cache, so it falls back to the compact digest path.

The side change: /bg becomes official

The verbose /background name is gone (community suggestion: match the short /btw-style convention). Background tasks now have exactly one name:

/bg compile a report of every TODO in this directory

/btw and /bg each have their lane: /bg dispatches independent tasks, /btw answers small questions using the current context. If you habitually type /background, it’s time to retrain the muscle memory.

When /btw pays off most

  • Mid-long-task: deploys, batch migrations, code review in progress — ask “where are we now?” or “what was that warning?” without pausing anything.
  • Context-dependent questions: “what naming convention did we agree on?” “what does this repo’s AGENTS.md say?” — the side answer sees the whole conversation.
  • Keeping the main session clean: the snapshot is read-only; no traces in history, no impact on compression or caching.

One honest caveat: both PRs landed August 29, so they currently exist only on main — no release tag includes them yet (v0.20.6 was tagged August 27). To try them today, hermes update and run from the latest code; otherwise wait for the next release.

Summary

/btw turns the high-frequency need of “ask a small question with current context” into a zero-cost first-class command: no interruption, no cache burn on the main session, no history pollution. With /bg taking over task dispatch, “asking” and “delegating” in a session are finally cleanly separated. Next time a question pops up mid-run, try leading with /btw — it understands what you’re talking about better than you’d expect.

To go deeper on the slash-command ecosystem, check out our command palette guide; for more ways to handle a busy agent (interjecting, queueing, steering without interrupting), the /busy family is worth a look too. Both PRs are part of the post-v0.20.6 stream on main — the v0.20.6 release notes summarize that whole window.