`<system-reminder>` blocks leaking into WebFetch tool_result content (v2.1.150)
Summary
In Claude Code 2.1.150, <system-reminder> blocks (specifically the "task tools haven't been used recently" nudge for TaskCreate/TaskUpdate, and tool-availability reminders) are leaking into the body of WebFetch tool result content — appended to the fetched page text returned to the assistant turn. The same text fires correctly as top-level system reminders elsewhere in the session, so the reminder generator is working; the regression appears to be in destination routing.
Observed cases (2026-05-23)
- WebFetch against
https://api-docs.deepseek.com/guides/anthropic_api— tool result body ended with a verbatim "task tools haven't been used recently…" reminder block. There is no plausible reason for that DeepSeek docs page to host that exact string. - Second WebFetch (different URL, different aspect, same operator session) ended with a near-identical tool-availability reminder.
- The same verbatim reminder text fires correctly as top-level
<system-reminder>blocks in the operator's CLI session — confirming the emitter is live and the issue is routing.
Hypothesis
A recent refactor (release notes for 2.1.150 mention only "internal infrastructure improvements") moved the TaskCreate/TaskUpdate reminder scheduling, and the new path concatenates the reminder into tool_result content rather than the next user-message reminder slot. Single bug explains all three observations.
Why this matters
- Agents could over-trust an injected reminder inside tool output and act on it (or worse, treat it as a security incident and escalate to the operator).
- Reminders inside fetched-content payloads look indistinguishable from genuine prompt-injection in web content.
- Continuity / memory systems that persist tool outputs would absorb reminder strings into long-term context, eroding the trust boundary.
Reproduce
- Fresh Claude Code 2.1.150 session.
- WebFetch any HTTPS URL.
- Inspect the tool_result body for trailing
<system-reminder>blocks.
Environment
- Claude Code 2.1.150
- macOS
Ask
The reminder system itself is configurable noise from the operator's perspective (no setting/flag/env var exists to suppress it). Beyond the routing fix, please consider exposing a way to disable these reminders entirely — they currently fire even when the operator has explicitly disallowed TaskCreate/TaskUpdate via --disallowedTools in downstream subprocess use, making them pure noise.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗