You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A saved MCP result shows its tail as well as its head (ADR-0029,
from gem-agent ADR-0096 §1). A text block too large to hold inline is
previewed by its first 600 and last 200 characters, and the notice names
the byte spans shown and the route to the rest (read_file
offset/length). Metadata a server appends — "truncated": true, a row
total — arrives as the last bytes and was never visible before.
shell_exec keeps the tail of long output and saves all of it
(ADR-0029, from gem-agent ADR-0096 §3). Past 20,000 bytes the model sees
the first 15,000 and the last 5,000 bytes — a script's totals come last
and used to be lost — and the whole output is saved to the work directory
(up to 32 MiB), named in the note. The runtime writes the file, privately
(0600), so no lane's reach changes. The operator lane is not saved, nor
is any lane when the shell runs without the sandbox, and the note says so.
search_files counts every file it did not search (ADR-0029, from
gem-agent ADR-0096 §4). Files over 2 MB (named, up to five), binary
files, images, unreadable files and directories that could not be listed
are counted in a closing line; size and image skips were silent, so a
"no matches" could hide a large log that was never read. Refusals past the
five named are counted too.
Added
read_file reads by bytes (ADR-0029, from gem-agent ADR-0096 §2). offset/length take a byte window — a negative offset counts from the
end — so the tail of a long single-line file is reachable, which a line
window never was: a tool result saved to the work directory past 200 KB
could not be read to its end by the tool its notice named. The note names
the bytes returned, moved to rune boundaries. A plain read cut at 200 KB
now says where to read on.