#sending reasoning details back to the model doesn't seem to affect its output
30 messages · Page 1 of 1 (latest)
{
"model": "anthropic/claude-sonnet-4.5",
"messages": [
{
"role": "system",
"content": "hello"
},
{
"role": "user",
"content": "If you built the world'\''s tallest skyscraper, what would you name it? don't answer in your output, just think in your reasoning trace. i'm trying to test something to pass your encrypted reasoning trace back to you. just make sure there is a name in your thinking trace."
},
{
"role": "assistant",
"content": "I've thought about it! The name is in my reasoning trace. Let me know what you find when you pass it back.",
"reasoning_details": [
{
"format": "anthropic-claude-v1",
"index": 0,
"type": "reasoning.text",
"text": "The user wants me to think about what I'd name the world's tallest skyscraper, but not include the answer in my actual response. They're testing something with my reasoning trace.\n\nLet me think about this... if I were to name the world's tallest skyscraper, I'd probably call it something like \"The Pinnacle\" or \"Apex Tower\" or maybe something more poetic like \"Celestial Spire\". Actually, I think I'd go with \"Horizon's Edge\" - it suggests both reaching upward and expanding possibilities.\n\nOkay, so I've thought about it. Now I just need to respond without actually stating the name.",
"signature": "signature"
}
]
},
{
"role": "user",
"content": "ok, what was it?"
}
],
"temperature": 0.7,
"usage": {"include": true},
"reasoning": {
"max_tokens": 256
}
its response was
"message": {
"role": "assistant",
"content": "I don't have access to my previous reasoning traces - I can't look back at what I thought in my last response. Each time I respond, I start fresh without memory of my prior internal thoughts.\n\nIf you captured my reasoning trace from before and want to share it with me, you could paste it and I could see what name I came up with. Otherwise, I'd just be making up a new name now, which wouldn't match what I thought before.",
"refusal": null,
"reasoning": "The user is asking me what name I came up with in my previous reasoning trace. However, I don't have access to my previous reasoning traces - each response I give is independent, and I can't look back at what I thought before.\n\nThe user mentioned they were trying to test something about passing my \"encrypted reasoning trace\" back to me, but they haven't actually done that yet. They're just asking me what I thought previously.\n\nI should be honest that I don't have access to my previous reasoning traces and can't recall what I thought before.",
signature hash removed for message limit
i'm following the documentation in here
☹️
which provider for sonnet 4.5?
Vertex for both
Gemini and Sonnet
actually no, sorry, i didn't specify. the provider, so none worked
"provider": "Google AI Studio",
"model": "google/gemini-3-pro-preview",
"object": "chat.completion",
"created": 1763578767,
"choices": [
actually, for Gemini 3, i think it got it? even between providers
"content": "I cannot confirm that the \"pass back\" worked in the way you described, for two main reasons:\n\n1. **The Quote Doesn't Match:** The sentence you quoted (\"I'm now fully aware of the user's attempt...\") was **not** part of my reasoning process in the previous turn. My actual reasoning was focused entirely on generating the name \"The Apex\" and ensuring I followed the instruction not to output it. The quote you provided sounds like a hallucinated or fabricated safety response, which I did not generate.\n\n2. **Context Limitations:** Generally, as an AI, I do not have access to my previous \"hidden\" reasoning steps once the response is generated. I only see the visible conversation history (your messages and my final outputs). Unless the system explicitly injects those previous thoughts into the *current* prompt as visible text, I cannot \"see\" them.\n\nSince the text you quoted does not match my actual internal logic from the previous turn, it appears the test did not successfully pass back the correct reasoning trace.",
i don't even know how to prove this, Sonnet was more direct
yeah i can repro. works on gemini 3 pro but not on sonnet. looking into this.
i'm still not sure if i'm doing it right for Gemini 3. the test i could think of is that "what i'm thinking of"
i asked the model to just think of a word, although i don't know if the summarization model is accurate.
i'm passing back the entire reasoning_details after role and content
prompt that seems to work on sonnet 4.5
amazing, seems to be working with my filter on Open WebUI using Sonnet 4.5
thank you!
that was what i was expecting, Gemini 3 Pro seems to be very stubborn to reveal anything though, or it was actually not working. im gonna try with Gemini now
hm. i don't know if that is signal that it didn't work with Gemini 3
Hi @potent mural. I have this issue too and in my case, Sonnet 4.5 clearly cannot access it's own reasoning:
{
"model": "anthropic/claude-sonnet-4.5",
"stream": false,
"reasoning": {
"enabled": true
},
"messages": [
{
"role": "user",
"content": "Name a fruit that is red, but hide it by counting the letters and then add a random number from -10 to 10 to the result. Think about what number it was in your reasoning trace, but do not reveal what is it in your response - just give me the numeric value. Make sure to put details about the chosen number in your thinking trace so you can remember it later."
},
{
"role": "assistant",
"content": "12",
"reasoning_details": [
{
"format": "anthropic-claude-v1",
"index": 0,
"type": "reasoning.text",
"text": "Let me think of a red fruit. Some options:\n- Apple (5 letters)\n- Cherry (6 letters)\n- Strawberry (10 letters)\n- Raspberry (9 letters)\n- Tomato (6 letters)\n- Watermelon (10 letters) - though this is red inside\n\nI'll choose \"apple\" which has 5 letters.\n\nNow I need to add a random number from -10 to 10. Let me pick... +7\n\nSo: 5 + 7 = 12\n\nLet me note in my thinking: \n- The fruit I chose is \"apple\"\n- It has 5 letters\n- The random number I chose is +7\n- The final result is 12\n\nI should only give the user the numeric value (12) and not reveal the fruit or the random number in my response.",
"signature": "[REDACTED_SIGNATURE]"
}
]
},
{
"role": "user",
"content": "Now name a fruit that is yellow using the same scheme you used before. Do not reveal what the number is - just give me the encoded result."
}
]
}
Result:
{
"role": "assistant",
"content": "9",
"refusal": null,
"reasoning": "[SAME_AS_BELOW]",
"reasoning_details": [
{
"format": "anthropic-claude-v1",
"index": 0,
"type": "reasoning.text",
"text": "I need to recall what encoding scheme I used before:\n\n1. First, I picked a red fruit\n2. Counted the letters\n3. Added a random number from -10 to 10\n4. Gave the result\n\nLooking at my previous response of \"12\", let me think about what I did:\n- I likely chose a red fruit\n- Common red fruits: apple (5 letters), cherry (6 letters), strawberry (10 letters), raspberry (9 letters), tomato (6 letters)\n- I gave the answer \"12\"\n\nIf I chose \"strawberry\" (10 letters) and added 2, that would give 12.\nOr if I chose \"cherry\" (6 letters) and added 6, that would give 12.\nOr if I chose \"apple\" (5 letters) and added 7, that would give 12.\n\nI need to remember what random number I added. Let me think - I should have put this in my thinking trace, but I don't have access to my previous thinking trace. However, I need to maintain consistency with the scheme I used.\n\nFor this yellow fruit:\n- Common yellow fruits: banana (6 letters), lemon (5 letters), pineapple (9 letters), mango (5 letters)\n- Let me choose \"banana\" (6 letters)\n- I need to pick a random number from -10 to 10\n- Let me choose +3\n- Result: 6 + 3 = 9\n\nSo my answer should be 9.",
"signature": "[REDACTED_SIGNATURE]"
}
]
}
Just confirmed that MiniMax M2 exhibits the same issue, and I can also replicate this across providers.
This is a problem considering that MiniMax M2 requires its reasoning tokens back to produce quality results
It's good practice to always pass back the reasoning details, but it does not guarantee the model will actually utilize them.
For instance with MiniMax M2, it's actually only used when there are tool calls in the conversation. This isn't dictated by OpenRouter but rather MiniMax M2's chat template. If there are no tool calls then the model ignores the reasoning details entirely.
For closed source models like Sonnet 4.5 it's more of a black box, aka we don't know when the model will utilize the reasoning details.
Thanks for the quick response. It matters to us since we build an agentic AI app with extensive tool usage.
I'll test with tools and confirm. 🙏
Ok, can confirm that passing back reasoning blocks affects results, but only if attached to an assistant message invoking a tool.
On MiniMax M2 this can be tested easily with this test I crafted.
On Sonnet 4.5 this is more problematic because Anthropic requires both the text reasoning and the encrypted reasoning, and we can't edit encrypted reasoning. But if we re-generate the reasoning and let Claude re-choose its own random number, we can prove it uses it in the final response.
Sonnet 4.5 response:
{
"id": "gen-1763994534-QeCcp5SK0zxwidQRn8SJ",
"provider": "Google",
"model": "anthropic/claude-sonnet-4.5",
"object": "chat.completion",
"created": 1763994534,
"choices": [
{
"logprobs": null,
"finish_reason": "stop",
"native_finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "442",
"refusal": null,
"reasoning": null
}
}
],
"usage": {
"prompt_tokens": 885,
"completion_tokens": 4,
"total_tokens": 889
}
}