Chat isn't a one-way stream — every message and every reply has controls attached. Once you know them, you can iterate on complex prompts without starting over.
The basics:
Concurrent messages are queued FIFO — safe to type-and-send multiple in a row.
While the agent is streaming a response click ⏹ Stop on the tab header. The current turn is cancelled. Any partial response and completed tool calls are preserved; the next queued message runs next.
In Slack, the !stop command does the same.
Hover any user message and click Edit. The message becomes editable in place.
Use this to iterate on a prompt: send a first attempt, see how the agent responded, edit and refine.
Hover the last agent response and click ⟳ Regenerate to retry the turn.
Regenerated replies are stored as variants on the same message. Use the ◀ ▶ arrows on the reply to flip between attempts.
Combine with model selection to compare responses across models: switch model, regenerate, flip variants.
Fork clones the current session into a new tab.
The forked tab is fully independent from that point — messages sent in one don't reach the other.
When a tool call completes, its result appears in the timeline. Hover the tool call:
Some tool categories aren't undoable (execute_bash, network calls). Those show a disabled undo button.
When approval is required (interactive mode, not auto or trusted):
More on trust levels in Security.
Some tool calls — specifically AskUserQuestion — render as structured option cards rather than free-text responses. Click a card to answer; your choice is fed back to the agent as the tool result.
Type / at the start of a message to see the slash command menu:
| Command | Effect |
|---|---|
/agent | Switch or manage the active agent |
/changelog | Show the release changelog |
/chat | Save or load a chat session |
/clear | Clear conversation history |
/code | Open code intelligence tools |
/compact | Compact conversation to free context |
/context | Manage context files and token usage |
/editor | Compose your prompt in an external editor |
/exit | Exit the chat session |
Full slash command reference: CLI reference.
You can also edit agent responses, but with a caveat: this is a local edit only — the LLM's understanding of the conversation still uses the original response until you /compact or the session is reset. Use this to correct a formatting issue in something you're going to copy out, not to change what the agent "thinks" it said.
Some messages arrive from automated sources — cron notifications, subagent completions, or workflow injections. These are marked in the UI:
Injected messages are treated as automated input, not user input.
Interactive mcwidgets can send events back to the session:
window.parent.postMessage({type: 'kirocrew:action', ...}, '*')[Widget action event] messageThis lets you build small interactive UIs (buttons, forms, dashboards) that live inside the chat and drive further agent work.
Message controls