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:
@filename: search and attach from the active project./path or ../path: browse and attach from that directory! <command>: review and run a shell command in the project terminal; see ChatHover a message and choose Quote, or right-click it and choose Quote message, to carry the whole message into your next send. A quote card appears in the composer. After you send, the card in the transcript jumps back to the original message when selected.
One quote is staged at a time. Quoting another message replaces it, and switching to another session drops it.
When the agent is working, the send button splits:
The selection is remembered per session and shared with that session's Side Chat. With Enter configured to send, Cmd+Enter on macOS or Ctrl+Enter elsewhere performs the opposite action once. If a steer cannot reach an active turn, Kiro Crew demotes it to a visible queue card instead of dropping it.
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.
Hover a table in an agent reply to show its actions. Widen spreads the table into the pane's spare width; the same control reads Narrow while the table is widened. Drag the edge of a header cell to resize that column. The copy-as-Markdown and copy-as-CSV actions sit beside it.
When a Side Chat answer is complete, choose Add to main chat to place the answer in the main composer. Nothing is sent until you send it, so you can edit it first. If a side turn stops responding, stop it from the Side Chat.
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