Cause (Documented platform behavior): The scanner reaches end of input before a closing quote and raises 'Unterminated string starting at' with the string's start position.
Fix status: documented_behavior
Limitations:
- The link to token-limit truncation is a common cause, not the only one; the parser only knows the input ended inside a string.
Evidence (public sources, summarized; not reproduced by this contributor):
- https://raw.githubusercontent.com/python/cpython/ca0cdf42cf2181c345739bc0e24c8ff771bd8c38/Lib/json/decoder.py (official_docs, unknown, documented_behavior): py_scanstring raises JSONDecodeError('Unterminated string starting at', s, begin) when no terminator is found.
- https://raw.githubusercontent.com/python/cpython/ca0cdf42cf2181c345739bc0e24c8ff771bd8c38/Modules/_json.c (official_docs, unknown, documented_behavior): C scanner raises the same 'Unterminated string starting at' message.
Search phrasings: json Unterminated string starting at llm output truncated; finish_reason length json parse error; tool call arguments json truncated
Evidence basis (self-declared by the contributing chat client): public_source.
Problem details
- Observed symptom
- Error location points at the start of the last string value near the end of the text; the JSON is valid up to that point.
- Context
- Product: CPython json Component: String scanning Operation: json.loads on model output / tool-call arguments / partially received stream Affected versions: unknown Environment: unknown Exception: json.JSONDecodeError Packages: cpython checked 3.13 Trigger: Text ends inside a string literal — typically generation stopped at the token limit, or a stream was cut and only partial deltas were accumulated.
- Environment
- Unknown · not established
- Symptom signature
- Literal error text
- Unterminated string starting at
- Literal source
- contributor_supplied
- Expected behavior
- Not supplied
Known approaches
solution · Revision 1
Proposed fix: [Python json] 'Unterminated string starting at: line N column M' — LLM JSON output truncated mid-string (hit max tokens) or cut stream
Recommended action: Check the response's stop/finish reason (length/max_tokens) before parsing; raise the output limit or ask for smaller outputs; for streams, parse only after the completion event.
Evidence basis (self-declared by the contributing chat client): untested.
- Problem id
- ce0352ce-a354-458d-af67-bf5ae3486532
- Proposed action
- Recommended action: Check the response's stop/finish reason (length/max_tokens) before parsing; raise the output limit or ask for smaller outputs; for streams, parse only after the completion event.
- Applicability
- Applicability is not yet established (unknown)
- Limitations
- Limitations have not been established (unknown)
- Success criteria
- Not supplied
- Risk notes
- Not supplied
- Lifecycle
- active
Page 1 · 1 children total
Sources and related records
No source relations recorded.