C
Docs

Message Queuing & Steering

Send messages while the agent is responding and steer its behavior in real time.

Overview

Normally, you'd wait for the agent to finish its response before sending the next message. With message queuing, you can type and send messages at any time — even while the agent is mid-response. Your messages are delivered at natural breakpoints in the agent's processing, so nothing gets lost or garbled.

This is especially useful when you spot something early in the agent's response that you want to correct, or when you want to provide additional context before the agent finishes its current task.

New in v3.x

Message queuing is a new feature in C3 v3.0. Your messages are delivered at natural breakpoints so the agent processes them cleanly.

Queuing Messages

When the agent is actively responding, just type your message and hit send as you normally would. The message is queued and will be delivered at the next natural breakpoint.

Visual Indicators

Queued messages are clearly marked in the chat:

  • Queued Badge — A golden badge reading "Queued" appears on the message
  • Queue Position — If multiple messages are queued, the badge shows position (e.g., "Queued (2)")
  • Dimmed Appearance — Queued messages appear slightly dimmed until delivered

Cancelling Queued Messages

Changed your mind? Tap the X button on the queued badge to cancel the message before it's delivered. Once a message has been sent to the agent, it can no longer be cancelled.

Attachments

Queued messages support image attachments, just like regular messages. Attach screenshots or reference images and they'll be delivered along with your text.

Steering the Agent

Message queuing enables a powerful workflow: steering the agent while it works. Instead of waiting for the agent to finish and then correcting course, you can provide real-time guidance.

How It Works

Your queued messages are delivered at natural pauses — after the agent finishes a tool call, completes a response, or reaches another breakpoint. This means the agent processes your steering message cleanly, without being interrupted mid-thought.

Example Scenarios

  • The agent starts editing the wrong file → queue a message saying "edit app.tsx instead, not index.tsx"
  • The agent is about to run tests → queue "skip the tests for now, focus on the UI"
  • You notice a bug in the agent's approach → queue a correction before it goes further

Permission Feedback

When the agent requests permission to perform an action (edit a file, run a command, etc.), you have more options than just "Allow" or "Deny":

Soft Deny

Select "Tell the agent what to do instead" to deny the specific action but provide feedback. The agent receives your message and continues working with your guidance — it doesn't stop, it adapts.

Hard Deny

Select "No" to deny the action and stop the agent immediately. Use this when you want the agent to halt completely, not just change approach.

When to Use Each

Soft deny when the agent's on the right track but taking a wrong step — e.g., "don't delete that file, rename it instead."
Hard deny when the agent is going in a completely wrong direction and you want to start fresh with new instructions.

Tips & Best Practices

  • Be specific when steering — "Use flexbox instead of grid" is better than "do it differently"
  • Queue early — If you spot an issue, queue your correction right away. The sooner it's in the queue, the sooner the agent gets it
  • One concern per message — Multiple queued messages are processed in order, so splitting concerns into separate messages keeps things clear
  • Use soft deny liberally — It's faster than denying, waiting for the agent to stop, and then re-explaining what you want
  • Cancel freely — There's no penalty for cancelling a queued message if you change your mind