Repository navigation
Conversation
Claude Opus 5.5 on Bedrock refuses the Flash turn (stop_reason refusal, category reasoning_extraction, 0 output tokens) when the system prompt asks it to write prose reflecting its thinking and when the follow-up reminder mentions that internal thinking is not shown. Replayed against captured requests: the original wording is refused 3/3 on Opus 5.5 while Sonnet 5.5 and Haiku 5.5 answer; with both lines reworded as a progress note (screen, milestone, next action) Opus answers with a tool call 3/3. Same information reaches the step log.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
With Claude Opus 5.5 on Amazon Bedrock, some Flash turns come back with no content and these stop details:
The turn has 0 output tokens. The run then has nothing to act on.
Two pieces of the Flash prompt ask the model to write out its thinking:
flash_runner.md: "think through observation, planning and action … your reply carries one short paragraph of connected prose reflecting those three phases";REASONING_REMINDER: "Your previous turn carried no visible reasoning text (internal thinking is not shown) …".This PR rewords both as a progress note: what the screen shows, which milestone it is on, and the next action. The step log receives the same information, and nothing else changes.
Evidence
I captured the refused requests through a logging proxy and replayed them unchanged against the same endpoint.
The refusal depends on the request content. On some screens the original wording does go through, so it does not happen on every run.
With this change, plus #217, the two cases I use for on-device acceptance pass 4/4 rounds on Opus 5.5, with no refusals. One case is applying a theme in a custom-drawn store app; the other is Settings → Dark theme.
Tests
The existing Flash runner and reminder tests pass. They compare against the
REASONING_REMINDERconstant, not its text.make test,make lintandmake typecheckpass.