#30099 [Bug]: reasoning_tokens reported as 0 for redacted adaptive thinking (Claude Opus 4.7/4.8 on Vertex AI)
## Summary
When Claude Opus 4.7 / 4.8 run with adaptive thinking (`thinking: {type: adaptive}` + `output_config: {effort: ...}`) on Vertex AI, the model performs extended thinking and Vertex reports the count in `usage.output_tokens_details.thinking_tokens`. However LiteLLM's response usage translation computes `reasoning_tokens` by counting tokens in the returned `reasoning_content` text. Opus 4.7/4.8 return a **redacted** thinking block (empty `thinking` text plus a `signature`), so the estimate is 0 and the OpenAI-shaped usage reports `completion_tokens_details.reasoning_tokens = 0` despite real reasoning having occurred.
This affects budget enforcement: LiteLLM miscalculates the true cost when billing thinking tokens, leading to incorrect spend tracking.
## Evidence
Raw Vertex response (abridged): ```json { "content": [ {"type": "thinking", "thinking": "", "signature": "Et0CCmUIDhAC..."}, {"type": "text", "text": "# Computing 17^23 mod 5 ..."} ], "usage": { "input_tokens": 25, "output_tokens": 577, "output_tokens_details": {"thinking_tokens": 125} } } ```
LiteLLM-translated usage (wrong): ``` completion_tokens=577, reasoning_tokens=0, text_token…