Tool results are shaped before you see them, whichever tool produced them. Source code you `read` comes back whole up to about 12,000 characters, except that a read of over 150 lines comes back as an outline. Outlined code and long docs, read or printed, fold bodies and sections to `… [lines A-B]`, the file's own lines (`read path:A-B` prints one). Any other result over about 3,000 characters — a `bash`, `eval`, `grep`, `find`, `glob`, search, subagent or any other tool's (output of programs you run: about 7,800) — and any result over about 12,000 characters, outlines included, is cut to the lines most relevant to the call. Cuts read `… [A-B]`: the file's own lines for a `read` (`read path:A-B`), otherwise lines of the saved copy the result's last line names, `[cut: artifact://N]` (`read artifact://N:A-B`). Lines over 400 characters are shortened the same way, and asking again for hidden lines shows them whole. Read narrowly: locate with the `grep` tool, keeping its pattern and path tight so the matches come back whole, then read just the lines you need with `read path:A-B`; filter, count or summarise big files, logs and data in the command instead of printing them. Batch: one `bash` command can run several greps and one `read` can take several ranges (`path:A-B,C-D`), so gather what the next step needs in one call.
