Files
gemini-cli/docs/cli/model-steering.md
Keith Guerin 22cf2a6e91 feat(ui): implement refreshed UX for Composer layout
- Promotes refreshed multi-row status area and footer as the default experience.
- Stabilizes Composer row heights to prevent layout 'jitter' during typing and model turns.
- Unifies active hook status and model loading indicators into a single, stable Row 1.
- Refactors settings to use backward-compatible 'Hide' booleans (ui.hideStatusTips, ui.hideStatusWit).
- Removes vestigial context usage bleed-through logic in minimal mode to align with global UX direction.
- Relocates toast notifications to the top status row for improved visibility.
- Updates all CLI UI snapshots and architectural tests to reflect the stabilized layout.
- Fixes persistent TypeScript compilation errors in tests by refactoring async render helpers (`LoadingIndicator.test.tsx`, `AppHeader.test.tsx`, `ToolMessage.test.tsx`) to avoid direct destructuring of complex inferred return types, ensuring consistent Promise flattening across all CI environments (Node 20/22/24).
2026-03-19 23:21:20 -07:00

2.8 KiB

Model steering (experimental)

Model steering lets you provide real-time guidance and feedback to Gemini CLI while it is actively executing a task. This lets you correct course, add missing context, or skip unnecessary steps without having to stop and restart the agent.

Note: This is a preview feature under active development. Preview features may only be available in the Preview channel or may need to be enabled under /settings.

Model steering is particularly useful during complex Plan Mode workflows or long-running subagent executions where you want to ensure the agent stays on the right track.

Enabling model steering

Model steering is an experimental feature and is disabled by default. You can enable it using the /settings command or by updating your settings.json file.

  1. Type /settings in the Gemini CLI.
  2. Search for Model Steering.
  3. Set the value to true.

Alternatively, add the following to your settings.json:

{
  "experimental": {
    "modelSteering": true
  }
}

Using model steering

When model steering is enabled, Gemini CLI treats any text you type while the agent is working as a steering hint.

  1. Start a task (for example, "Refactor the database service").
  2. While the agent is working (the spinner is visible), type your feedback in the input box.
  3. Press Enter.

Gemini CLI acknowledges your hint with a brief message and injects it directly into the model's context for the very next turn. The model then re-evaluates its current plan and adjusts its actions accordingly.

Common use cases

You can use steering hints to guide the model in several ways:

  • Correcting a path: "Actually, the utilities are in src/common/utils."
  • Skipping a step: "Skip the unit tests for now and just focus on the implementation."
  • Adding context: "The User type is defined in packages/core/types.ts."
  • Redirecting the effort: "Stop searching the codebase and start drafting the plan now."
  • Handling ambiguity: "Use the existing Logger class instead of creating a new one."

How it works

When you submit a steering hint, Gemini CLI performs the following actions:

  1. Immediate acknowledgment: It uses a small, fast model to generate a one-sentence acknowledgment so you know your hint was received.
  2. Context injection: It prepends an internal instruction to your hint that tells the main agent to:
    • Re-evaluate the active plan.
    • Classify the update (for example, as a new task or extra context).
    • Apply minimal-diff changes to affected tasks.
  3. Real-time update: The hint is delivered to the agent at the beginning of its next turn, ensuring the most immediate course correction possible.

Next steps