fix: JSON parsing fails for large tool results containing UTF-8#34
Closed
grytrn wants to merge 1 commit into
Closed
fix: JSON parsing fails for large tool results containing UTF-8#34grytrn wants to merge 1 commit into
grytrn wants to merge 1 commit into
Conversation
Fixes anthropics#32 - JSON parsing fails for large tool results The anyio.TextReceiveStream has issues when reading large lines (>10KB) containing UTF-8 characters, causing JSON parsing to fail at position 130. This fix: - Removes dependency on TextReceiveStream - Reads stdout/stderr as raw byte streams - Manually handles line buffering and UTF-8 decoding - Properly processes remaining buffer content The issue occurred because TextReceiveStream appears to have a bug when handling large lines with specific content patterns, particularly those containing UTF-8 characters like the arrow symbol (→) used in line numbers. Tested with: - Large file reads (>30KB) - Files containing UTF-8 characters - Multiple concurrent tool uses
|
This does work for me! Thank you |
Collaborator
Collaborator
This was referenced Jun 29, 2025
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
Fixes #32 - JSON parsing fails at position 130 for large tool results
This PR replaces
anyio.TextReceiveStreamwith raw byte stream reading to fix a critical bug where the SDK fails to parse JSON responses larger than ~10KB that contain UTF-8 characters.The Problem
When Claude reads files or generates large tool results, the SDK consistently fails with:
The issue occurs because
TextReceiveStreamappears to corrupt large lines containing UTF-8 characters (like the→arrow used in line numbers).The Solution
This fix:
TextReceiveStreamTesting
Tested with:
Reproduction
The bug can be reproduced by asking Claude to read any Python file larger than 10KB:
Technical Details
The root cause appears to be in how
anyio.TextReceiveStreamhandles buffering for large lines. By reading raw bytes and manually handling line splitting and UTF-8 decoding, we avoid this issue entirely.