Quick Start
How It Works
Message steering injects guidance at chat and tool execution boundaries without interrupting the agent’s workflow.Priority Levels
| Priority | Int value | Behaviour |
|---|---|---|
| LOW | 1 | Whispered guidance |
| NORMAL | 5 | Default priority |
| HIGH | 10 | Acknowledged urgently in next chat step |
| URGENT | 20 | Can interrupt tool execution |
| INTERRUPT | 30 | Bypasses rate limiting; immediate stop of current tool |
CLI Usage
Enable message steering from command line:--message-steering flag sets message_steering=True on the agent.
YAML Usage
Enable steering per role in YAML configuration:Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
message_steering | bool | MessageSteeringProtocol | False | Enable steering |
max_messages | int | 50 | Queue capacity (in constructor) |
check_interval | float | 0.1 | Poll interval in seconds |
message_steering=False (default), there’s zero overhead - the feature has no performance impact when disabled.
Agent Methods
| Method | Signature | Description |
|---|---|---|
steer | agent.steer(message: str, priority: int = 5) -> str | Queue a steering message. Returns tracking ID. |
get_steering_status | agent.get_steering_status() -> Dict[str, Any] | Returns {enabled, pending_count, has_pending} |
message_steering_enabled (property) | agent.message_steering_enabled -> bool | Whether steering is active |
Custom Steering Backends
ImplementMessageSteeringProtocol to plug custom backends:
Best Practices
Use threading for long-running tasks
Use threading for long-running tasks
Start agents in background threads to enable concurrent steering. The threaded pattern is the primary use case for message steering.
Choose appropriate priorities
Choose appropriate priorities
Use NORMAL (5) for style guidance, HIGH (10) for course corrections, URGENT (20) to interrupt tools, and INTERRUPT (30) only for immediate stops.
Keep messages concise
Keep messages concise
Steering messages are injected into prompts. Keep them brief and actionable for best results.
Monitor steering status
Monitor steering status
Use
get_steering_status() to check pending messages and ensure your guidance is being processed.Related
Pre/post execution hooks (compile-time interception)
Interactive input vs background steering

