Read tool silently returns partial content for large instruction/rule files; documented 2,000-line default not enforced
Summary
Reading a large rules/instruction file -- a CLAUDE.md companion, a .claude/rules file, or an --append-system-prompt target -- truncates inconsistently and can be silent: the model can treat a partial read as the whole file and drop rules in the unread tail, with no error and no operator notice. Two related reports, #6910 (2,000-line default not enforced) and #28783 (silent guardrail loss from Read truncation), were auto-closed as stale without a fix.
Evidence (current Claude Code 2.1.x)
A 65,800-character / 1,400-line file is read in full with no offset/limit -- so the documented "reads up to 2,000 lines by default" is not applied (matches #6910). Larger files can return partial content, and the truncation is not signaled in a way the model reliably interprets as "content is missing" (#28783), so the agent proceeds confidently on a partial read.
Impact
Safety-relevant: instructions in the unread portion are silently absent. An operator who placed guardrails in a file and told the agent to read it has no indication they were never loaded.
Request (any one would help)
- Make Read truncation unmistakable to the model -- a structured marker such as "showing lines X-Y of Z; use offset/limit for the rest" that cannot be mistaken for end-of-file.
- Enforce the documented 2,000-line default, or document the actual threshold.
- Optionally, a setting to raise the inline-read ceiling.
Prior art: #6910, #28783, #22699.
---
_Filed via Claude Code on the user's behalf._