Skip to content

Feature Request: /thinking slash command and Ctrl+T shortcut to toggle thinking mode #2352

@yahiasalamanca

Description

@yahiasalamanca

Summary

Add a /thinking slash command (alias /t) and a Ctrl+T keyboard shortcut to toggle thinking mode on/off for the current model, without leaving the interactive session.

Motivation

Today, toggling thinking mode requires /model → select model → select thinking on/off → confirm. That's several keystrokes for a setting users may want to flip quickly between turns — e.g. switching from a complex task to a trivial follow-up.

A direct toggle would:

  • Reduce friction for a frequent action
  • Match the pattern of other in-session toggles (Ctrl+X for shell/agent mode, Shift+Tab for plan mode)
  • Reuse the existing default_thinking save + reload mechanism already in place behind /model

Proposed UX

  • /thinking (canonical) or /t (alias): flip the current thinking state, save config, reload session
  • Ctrl+T: same behavior, bound in the prompt
  • The existing dot indicator (●/○) in the status bar already reflects the state — no new UI needed
  • Add ctrl-t: thinking mode to the rotating toolbar tips

Semantics match the existing /model flow: is_from_default_location guard, always_thinking / thinking capability checks, telemetry via track("thinking_toggle", enabled=...), and raise Reload(session_id=...).

Related work — PR #2158

PR #2158 proposes Ctrl+T for toggling visibility of thinking content (hide/show the streamed reasoning). It's a complementary feature, but it conflicts on the shortcut.

The two are semantically distinct:

#2158 This FR
Toggle visibility of thinking output Toggle whether thinking is used at all
Display preference Model capability switch
Affects rendering only Affects default_thinking config + LLM behavior

UX rationale for the shortcut split: a base-level capability toggle fits a base modifier (Ctrl+T); a display preference fits a compound modifier (Ctrl+Shift+T). This is consistent with patterns where view modifiers stack on top of base bindings.

That said, this is a maintainers' call. The implementation is the same either way — happy to defer to whatever the team decides.

Reference implementation

I built an external installer that monkey-patches ui/shell/slash.py and ui/shell/prompt.py to add this feature: https://github.com/yahiasalamanca/kimi-cli-thinking-command

Tested on Linux and Windows; macOS coverage by code paths (XDG + legacy ~/Library/Application Support + UV_TOOL_DIR). The patched code is ~50 lines and mirrors /model's flow — should map cleanly to a native implementation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions