Skip to content

fix(models): Claude Haiku 4.5 shows thinking on by default - #14445

Open
incognitojam wants to merge 2 commits into
pingdotgg:mainfrom
incognitojam:t3code/fix-claude-haiku-thinking
Open

incognitojam wants to merge 2 commits into
pingdotgg:mainfrom
incognitojam:t3code/fix-claude-haiku-thinking

Conversation

@incognitojam

@incognitojam incognitojam commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Problem

On Claude Haiku 4.5, the composer and the text generation setting show Thinking Off by default, but a chat turn or generated title sent without changing it thinks.

The manifest gives Haiku 4.5's thinking toggle no default, so the picker shows Off. When the user hasn't changed the toggle, no thinking setting is sent, and Claude Code thinks on Haiku 4.5 by default. The picker used to show thinking On unless the user turned it off (#179); it has shown Off since the option refactors in #1355 and #2246.

Fix

  • The manifest now gives the toggle currentValue: true, so the picker shows Thinking On, which is what Claude Code does. Installed servers pick this up from the hosted manifest, and I bumped updatedAt.
  • Claude text generation now sends a thinking setting only when the user chose one, as chat turns already do. Before, it sent the toggle's displayed value, so the new default would have become an explicit alwaysThinkingEnabled: true that overrides a user's own Claude Code setting. With this, nothing changes at runtime unless the user picks a value.

Verification

  • claude -p --model claude-haiku-4-5 with no thinking setting returned a thinking block, the same as with alwaysThinkingEnabled: true, both with and without text generation's flags. With alwaysThinkingEnabled: false it returned no thinking block.
  • On main, the composer showed Thinking Off, and an untouched Haiku 4.5 turn recorded a thinking block in Claude's session log.
  • With this change, a new Haiku 4.5 draft shows Thinking On, and an untouched turn still thinks. After choosing Off, the next turn had no thinking block.
  • With Claude Haiku 4.5 as the text generation model, Settings shows Thinking On. Generated thread titles thought with nothing chosen and with On chosen, and did not think with Off chosen.
  • New ClaudeTextGeneration tests check that text generation sends the chosen thinking value, and sends none when nothing is chosen, even though the model's toggle defaults to On.

UI Changes

Before After
image image

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes (not applicable)

Written by an agent (Claude Code, claude-opus-5-5).

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Sep 30, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — The PR changes Claude Haiku 4.5’s advertised thinking default and modifies the settings passed to Claude CLI text-generation operations. Although the implementation is focused and tested, product-default changes require human review.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

🧰 Additional context used
📚 Code guidelines (1)
docs/internals/effect-services.md — configured

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: aa06df79-86c6-4612-8d20-fc5ac2abf867
📥 Commits

Reviewing files that changed from the base of the PR and between c1a90f9 and 5188392.

📒 Files selected for processing (1)
  • apps/server/src/provider/model-manifest.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

Claude text generation now reads the selected boolean thinking option when building settings. Tests cover selected and unset values. The manifest and synthetic test fixture set the option’s currentValue to true.

Changes

Claude thinking selection

Layer / File(s) Summary
Thinking option data
apps/server/src/provider/model-manifest.json, apps/server/src/provider/ClaudeModelCatalog.testFixtures.ts
Claude Haiku 4.5’s thinking option and the synthetic test model now set currentValue: true. The manifest timestamp is updated.
Text-generation settings
apps/server/src/textGeneration/ClaudeTextGeneration.ts, apps/server/src/textGeneration/ClaudeTextGeneration.test.ts
Text generation reads the selected boolean thinking value and includes alwaysThinkingEnabled only when the value is boolean. Tests cover selected and unset values.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to 51883

The toggle displays On by default, and an explicit Off choice is preserved for Claude text generation. No actionable merge risk remains.

Architecture Summary

Architecture risk: 🔵 Low · up to 51883

The change affects 1 system.

Changed systems: apps/server

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — apps/server (service) was modified; 4 changed files map to changed impact.

Before / after behavior

  • observed — Modified behavior in apps/server/src/provider/ClaudeModelCatalog.testFixtures.ts: The synthetic thinking model’s thinking option descriptor now includes currentValue: true.
  • observed — Modified behavior in apps/server/src/textGeneration/ClaudeTextGeneration.test.ts: Adds a test that selects thinking: true and checks the CLI settings include alwaysThinkingEnabled:true, while generated output retains the expected subject.
  • observed — Modified behavior in apps/server/src/textGeneration/ClaudeTextGeneration.test.ts: Adds a test with no selected thinking option and checks the settings omit alwaysThinkingEnabled; generated output retains the expected subject.
  • observed — Modified behavior in apps/server/src/textGeneration/ClaudeTextGeneration.ts: Added the boolean model-selection option accessor import.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main change: showing Claude Haiku 4.5’s thinking option as on by default.
Description check ✅ Passed The description explains the problem and fix, reports focused verification results, and includes before-and-after screenshots. It does not include the template’s Scope and approval section or explicit…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 3…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added size:S 10-29 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Sep 30, 2026
@juliusmarminge juliusmarminge added the macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews label Oct 1, 2026 — with ChatGPT Codex Connector
Claude Code thinks on Haiku 4.5 unless thinking is turned off, and an
untouched turn sends no thinking setting, so it thinks. The picker showed
Thinking Off because the manifest gave the toggle no default.
Text generation sent the thinking toggle's displayed value, so the
manifest's On default became an explicit alwaysThinkingEnabled: true that
overrode a user's own Claude Code setting. Send it only when the user
chose it, as chat turns do.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews size:S 10-29 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants