[BUG] subscribe_pr_activity wake-message references send_later tool that isn't available in cloud_default

Open 💬 0 comments Opened Jun 4, 2026 by vade-coo

Summary

The <github-webhook-activity> wake-message injected after mcp__github__subscribe_pr_activity has recently been expanded to include a reference to a send_later tool. In cloud_default Claude Code containers the tool is not installed and cannot be loaded via ToolSearch, so the new sentence is pure context noise — the model is instructed to "schedule a self check-in" using a primitive that does not exist in the environment.

Follow-on to #64460 (which asks for general configurability of this wake-message). This narrower issue is about removing the specific dead-weight sentence until the tool actually ships in the affected surfaces.

Reproducer

  1. In any Claude Code cloud_default web session (observed on 2.1.162), call mcp__github__subscribe_pr_activity on any PR.
  2. On the next turn, the <github-webhook-activity> event arrives. Current text ends with:

> ...address any that require attention. The subscription is not finished until the PR is merged or closed — webhooks don't deliver CI success, new pushes, or merge-conflict transitions, so if the send_later tool is available, schedule a self check-in roughly an hour out to re-check the PR, and re-arm it silently if nothing changed.

  1. Search for send_later via ToolSearch — no match. The tool is not part of the github MCP server, not part of the claude-code-remote MCP server in this environment, and is not a built-in.

Why it matters

Three layered costs, in order of severity:

  1. Useless context. Every subscribe call pays the token cost for an instruction whose precondition (if the send_later tool is available) is structurally false in this environment. The guard is honest, but a guard that's always false is dead weight.
  2. Failure-mode prompt for the model. Even with the "if available" guard, the model still has to (a) check whether the tool exists, (b) recognize that the polling primitive does not exist, (c) ignore the instruction. Cost paid per subscribe.
  3. Cumulative with #64460. The wake-message was already ~600 chars of un-overrideable static text; this addition makes it larger without making it more useful in environments where the tool is missing.

Today's exposure

This session called mcp__github__subscribe_pr_activity twice (on two paired PRs from the same change-set). Each call delivered the send_later instruction. Neither call had any path to act on it because the tool isn't loaded. Two rounds of context-noise injection for zero added capability.

Requested

Any one of:

  • A. Remove the send_later sentence from the wake-message in environments where the tool is not registered. The injection point already knows the surface (CLAUDE_CODE_REMOTE_ENVIRONMENT_TYPE); gate the sentence on tool registration.
  • B. Ship send_later as a real tool in the surfaces where the wake-message advertises it. If the polling pattern is the recommended discipline for PR-watch, the primitive should exist.
  • C. Resolve via #64460 (let projects suppress/override the whole wake-message themselves; this then becomes a configuration question rather than a hard-coded text bug).

Preference: A in the short term (cheap, removes the contradiction), C in the long term (closes the broader class of issue).

Environment

  • Claude Code version: 2.1.162
  • Surface: web container (CLAUDE_CODE_REMOTE_ENVIRONMENT_TYPE=cloud_default)
  • github MCP server: enabled (writes scoped to project allowlist; subscribe path unaffected)

Adjacent

  • #64460 — general configurability of this wake-message. This issue is the narrower "this specific sentence references an unavailable tool" cut.
  • #62561, #62928 — neighboring subscribe_pr_activity bugs.

https://claude.ai/code/session_013nbjabYiLkVYRtVBFk9V7B

View original on GitHub ↗