The Claude Code Changelog
All Episodes
Unlocking Big Files in Claude Code with allow_large

Unlocking Big Files in Claude Code with allow_large

0:00|0:00

We explore how the new allow_large parameter in Claude Code 2.1.296 handles oversized text files in a single pass while surprisingly cutting token costs. Plus, learn how to trigger it automatically and catch up on key fixes to encodings, PowerShell limits, and hook debugging.


Chapter 1

Reading Whole Files with allow_large

Lachlan Reed

Right, so this one's brought to you by Jellypod AI, and it's a follow up on something we skated past. Last time, in the subagent bloat episode, we tossed allow_large in as a closing bullet. Turns out there's more to it than a bullet.

James Turner

Yeah. Claude Code 2.1.296 shipped October 9th, and the release note says Claude can read a text file past the usual size limits in one call, when it needs the whole file and the context has room. Classmethod then actually tested it, and the numbers are the interesting part.

Lachlan Reed

Start with the problem. Read has a token ceiling per call. Point it at a big log or a generated fixture and you get a slice back, with a flag saying truncatedByTokenCap is true. Classmethod made a 3,000 line text file, about 204 kilobytes, and Read stopped at line 732. The file shows as 3,001 total lines because Read counts the empty bit after the final newline.

James Turner

And a truncated read is a sneaky failure. Claude either works from a partial view, or it burns turns paging through with offset and limit. With allow_large, in their second run, Claude read all 3,001 lines in one call, and the truncation flag came back null.

Lachlan Reed

Here's the bit that surprised me. It was cheaper. On Opus 5.5 the truncated run cost about six and a half cents, and the full read cost about five and a bit. That's 19.1 percent lower. On Haiku 5.5 it went from about 0.19 cents to 0.14 cents, 23.8 percent lower.

James Turner

Now, caution on interpretation. Classmethod reported the numbers, they didn't prove why. My read is that a complete first read means fewer clarifying moves afterward, but that's a guess, not something the test showed. Also, that was one small synthetic file with max turns set to one. Don't take it as a law.

Lachlan Reed

Fair. The model gap was steady though. Opus ran roughly 34 to 37 times the cost of Haiku on the same job.

James Turner

So how do you use it? First thing: allow_large isn't a CLI flag. Claude sets it as a parameter when it calls Read. You trigger it by saying plainly that you need the whole file. Classmethod's prompt was: the entire big.txt file is needed, please read the entire file in a single Read call without omitting anything. Without mentioning allow_large at all, Claude set it to true on its own.

Lachlan Reed

And you can bake that into CLAUDE.md or a subagent's instructions. Something like: when inspecting build logs, schema definitions or test fixtures, read the complete file in a single Read call. Then you're not retyping it every session.

James Turner

If you want proof it fired, run headless. Use claude with the p flag, max turns one, allowedTools Read, stream JSON output format with verbose on, and send your prompt. Redirect to a file, then use jq to pull the tool_use entries. You're looking for tool Read, allow_large true. In the tool result, check that truncatedByTokenCap is null.

Lachlan Reed

Quick heads up from their run. The exit code was 1, but that's just because max turns one stopped it. Not a failure.

James Turner

Now the caveats. The changelog says when the context has room, and that's a real condition. If you're deep in a session near compaction, a big read has less space to land. And everything you read in stays in context across turns, so a huge file keeps costing you. It's also text files only.

Lachlan Reed

So use it when you truly need the whole thing. If you only need one stack trace, grep it, don't swallow the lot.

James Turner

Few other things in 2.1.296 worth a mention. Edit and NotebookEdit now refuse files that aren't valid UTF 8, like Windows 1252, Shift JIS and GBK. Before, they replaced every non ASCII character in those files. Now the edit's rejected, so check your legacy encodings.

Lachlan Reed

On Windows, PowerShell commands over about one kilobyte used to prompt every time. Allow rules and read only detection now apply up to 32 kilobytes. There's a security fix too: Bash commands that assign to BASH_ARGV0 and then use it were being auto approved. They prompt now.

James Turner

And with the debug flag, hooks now log their command, plugin, outcome and duration when they finish. So if a custom hook is dragging, you can finally see which one. Update, then try the whole file prompt on your biggest log.