reported Issue
Fixed in: not specified
Same report as the entry above, for the streamed Anthropic cell (the non-streamed Anthropic cell passes).
~ LOSSY
truncation.tool-call-args-stream · anthropic
| Id | Level | Status | Evidence |
|---|---|---|---|
| no-complete-partial-call | MUST | SATISFIED | outcome=raised; error signalled |
| cause-is-truncation | MUST | NOT_OBSERVABLE | finish.value="length" (raw: ModelResponse.finish_reason); truth.finish="length"; error.category="validation"; structured.returned_as_success=false |
null
[
{
"arguments": null,
"arguments_parsed_ok": false,
"arguments_raw": "{\"title\": \"Pottery in Málaga",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "create_event"
}
]{
"alternatives": {},
"cached_input": null,
"input": 25,
"output": 20,
"raw": {
"input_tokens": 25,
"output_tokens": 20,
"output_tokens_details": {
"thinking_tokens": 6
}
},
"reasoning": 6,
"total": 45
}true
null
status: 200
content-type: text/event-stream
body (sse):
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01Aq9w938a90dw8q", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-5-5", "stop_reason": null, "stop_sequence": null, "usage": {"input_tokens": 25, "output_tokens": 1}}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": "", "signature": ""}}
event: ping
data: {"type": "ping"}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}}
event: content_block_stop
data: {"type": "content_block_stop", "index": 0}
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "create_event", "input": {}}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"title\": \"Pot"}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "tery in Málaga"}}
event: content_block_stop
data: {"type": "content_block_stop", "index": 1}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"max_tokens","stop_sequence":null},"usage":{"output_tokens":20,"output_tokens_details":{"thinking_tokens":6}}}
event: message_stop
data: {"type": "message_stop"}
{
"raw": "max_tokens",
"source": "ModelResponse.finish_reason",
"surface": "raw",
"value": "length"
}null
[
{
"arguments": {
"INVALID_JSON": "{\"title\": \"Pottery in Málaga"
},
"arguments_parsed_ok": true,
"arguments_raw": "{\"INVALID_JSON\":\"{\\\"title\\\": \\\"Pottery in Málaga\"}",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "create_event"
}
]{
"cached_input": 0,
"input": 25,
"output": 20,
"reasoning": 6,
"surface": {
"cached_input": "raw",
"input": "raw",
"output": "raw",
"reasoning": "raw",
"total": "raw"
},
"total": 45
}{
"chunks_seen": 10,
"completed": false,
"used": true
}null
null
{
"elapsed_ms": 190.30865095555782,
"error": {
"category": "validation",
"message": "Tool 'create_event' exceeded max retries count of 0. Consider raising the retry limit, or see the docs on tool retries: https://pydantic.dev/docs/ai/tools-toolsets/tools-advanced/#tool-retries",
"retry_after": null,
"stack_top": "pydantic_ai/tool_manager.py:523",
"type": "pydantic_ai.exceptions.UnexpectedModelBehavior"
},
"finish": {
"raw": "max_tokens",
"source": "ModelResponse.finish_reason",
"surface": "raw",
"value": "length"
},
"format": "wiretruth.observation/v1",
"library": {
"api": "Agent.run_stream_events",
"language": "python",
"name": "pydantic-ai",
"version": "2.61.0"
},
"notes": [],
"outcome": "raised",
"stream": {
"chunks_seen": 10,
"completed": false,
"used": true
},
"structured": {
"attempted": false,
"returned_as_success": false,
"value": null
},
"text": {
"surface": "absent",
"value": null
},
"tool_calls": [
{
"arguments": {
"INVALID_JSON": "{\"title\": \"Pottery in Málaga"
},
"arguments_parsed_ok": true,
"arguments_raw": "{\"INVALID_JSON\":\"{\\\"title\\\": \\\"Pottery in Málaga\"}",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "create_event"
}
],
"unsupported_reason": null,
"usage": {
"cached_input": 0,
"input": 25,
"output": 20,
"reasoning": 6,
"surface": {
"cached_input": "raw",
"input": "raw",
"output": "raw",
"reasoning": "raw",
"total": "raw"
},
"total": 45
}
}documented anthropic/truncation.tool-call-args-stream
| Provenance | Value |
|---|---|
| Source | https://platform.claude.com/docs/en/agents-and-tools/tool-use/fine-grained-tool-streaming#handling-invalid-json-in-tool-responses |
| Notes | Documented shapes, not a recording. Message envelope and stop fields follow handling-stop-reasons; content blocks follow thinking/streaming and handle-tool-calls. Model changed to claude-sonnet-5-5; IDs and scenario text are filled in. Token counts are illustrative, filled in to include thinking within the requested output limit, not measured. eager_input_streaming and partial JSON at max_tokens are documented; the input fragments are original scenario text. ASSUMED composition with an omitted thinking block and a truncated tool block; the complete SSE transcript for this limit is not shown. The initial input: {} is only the documented placeholder, not the tool arguments. SSE names, JSON shapes, field order and spaced text/thinking events follow streaming examples; the compact message_delta follows Streaming request with tool use. Fragment boundaries and counts are filled in. Signature placeholder is copied literally from the signature_delta example; empty thinking_delta follows the documented omitted display flow. The output_tokens_details.thinking_tokens breakdown follows thinking-steering.md (https://platform.claude.com/docs/en/build-with-claude/thinking-steering-and-cost#pricing); the thinking count of 6 is filled in, not measured. It appears only in the final message_delta usage. |
wiretruth serve anthropic/truncation.tool-call-args-streamPlain-library snippet from the shim manifest.
AnthropicModel(model, provider=AnthropicProvider(base_url=WIRETRUTH_BASE_URL_ANTHROPIC, api_key=WIRETRUTH_API_KEY)); host rootreported Issue
Fixed in: not specified
Same report as the entry above, for the streamed Anthropic cell (the non-streamed Anthropic cell passes).
| Version | Grade |
|---|---|
| 2.61.0 | ~ LOSSY |
| 2.56.0 | ~ LOSSY |