anthropics / anthropics/claude-agent-sdk-python

Bug: Missing `content[type="thinking"]` in Python Agent SDK agent-conversation JSONL (0.1.35+)

Aberta
#777 3 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Python
Estrelas
8.1k
Forks
1.3k
Merge médio
2d 31min
PRs com merge (30d)
1

Descrição

# Summary
In `agent-conversations/**/*.jsonl` produced by the **Claude Agent SDK for Python** (`claude-agent-sdk` **v0.1.35+**), I often do **not** see assistant `content` blocks with `type: "thinking"` even when thinking is configured as enabled/adaptive with high effort or high `budget_tokens`.

Instead, intermediate reasoning appears in `content[type="text"]`, and in some runs the missing thinking correlates with incorrect multi-step derived values.

# Environment
- SDK: `claude-agent-sdk` **v0.1.35+** (Python), including **v0.1.52** (latest at time of reporting)
- Models tested:
- `claude-sonnet-4-5-20250929`
- `claude-sonnet-4-6`
- Thinking configs attempted:
- `thinking: { "type": "enabled", "budget_tokens": }`
- `thinking: { "type": "adaptive", "effort": "high" }`

# Expected
When thinking is enabled (or adaptive decides to think), `agent-conversations/**/*.jsonl` should consistently include assistant blocks like:
- `content: [{ "type": "thinking", "thinking": "...", "signature": "..." }, ...]`

# Actual
`type: "thinking"` is missing in some agent conversation logs (especially subagent logs), while `type: "text"` increases or contains reasoning-like narration.

## Version comparison
In my tests, behavior changes across `claude-agent-sdk` versions:

- With a **newer** `claude-agent-sdk` (>= `0.1.35`), the produced **agent conversation JSONL** often omits assistant `content` blocks where `type == "thinking"`.
- With an **older** `claude-agent-sdk`, assistant `content` blocks with `type == "thinking"` are present.
- Reproduced on **v0.1.52** as well.

## “Text replacing thinking” observation
When `type: "thinking"` blocks are missing, the number of assistant `content` blocks with `type: "text"` increases. These `text` blocks frequently contain visible, reasoning-like narration that appears to take the role that `thinking` blocks would normally serve, but this does not reliably translate into better agent performance (and in some runs correlates with less consistent/incorrect intermediate results).

## Possible behavioral impact
In multiple cases, runs where `thinking` blocks were missing produced less consistent intermediate results compared to runs where `thinking` blocks were present.

## Speed vs quality tradeoff observed
I also observed that runs without `thinking` blocks often complete faster, but that speedup appears to come with weaker agent performance/quality in intermediate reasoning outcomes.

# Questions
1. Is it intentional that the **Python SDK “agent conversation JSONL”** omits `type: "thinking"` blocks from some runs/subagents even when thinking is enabled?
2. If intentional, can we get documentation and/or an option to include thinking blocks in transcripts for debugging (e.g. `include_thinking_in_transcripts=true`)?
3. If unintentional, can you point me to the code path that strips/omits `thinking` during transcript serialization/compaction?

# Minimal reproduction (high level)
1. Use `claude-agent-sdk` v0.1.35+ with `ClaudeAgentOptions(thinking=...)` and tools/subagents.
2. Run an agent that produces `agent-conversations/**/*.jsonl`.
3. Inspect assistant message content blocks in the JSONL and check for `content[].type == "thinking"`.

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.