[security-guidance] Commit-review findings replaced by "claude.ai connectors are disabled" warning in the rewake notice
Status Open
Reported on v2.1.286
Maintainer reply None cached
Activity 0 comments · opened Oct 6, 2026
Summary
When the security-guidance commit review finds a vulnerability, the asyncRewake notice the agent receives often contains only an unrelated warning instead of the findings:
Background security review of commit — address or acknowledge the findings below, …: ⚠ claude.ai connectors are disabled because ANTHROPIC_API_KEY or another auth source is set and takes precedence over your claude.ai login · Unset it to load your organization's connectors
⚠ claude.ai connectors are disabled because …
The one-line rewakeSummary gets through (e.g. "Commit security review found: Command Injection in app.py"), but the details never reach the agent.
Environment
- security-guidance 2.0.8 (claude-plugins-official)
- Claude Code 2.1.286 in the Claude desktop app (Code tab), macOS 26.5.1
- First-party auth (Claude subscription login)
What's happening
- For PostToolUse commit reviews,
emit_metricsputs the findings only in the stdout JSON, athookSpecificOutput.additionalContext. - The asyncRewake body is taken from the hook's stderr when it is non-empty, otherwise its raw stdout. The plugin's own comment in
emit_metricsdescribes this as "stderr || stdout". The structuredadditionalContextfield isn't read for the rewake body. - In the failing runs, stderr held the "claude.ai connectors are disabled…" line, twice. It is most likely printed by the inner
claudethat the agentic review starts: the agenticClaudeAgentOptionsdon't pass astderrcallback, unlike the 3P single-turn path. Because stderr was non-empty, it became the notice and the findings were dropped.
Evidence
- On one machine, every commit-review notice that had findings (3 of 3, across different sessions) arrived with only the warning. Stop-hook reviews in the same sessions arrived intact (that path writes its guidance to stderr).
- Re-running the same commit review outside Claude Code, with stdout and stderr captured separately, returned the full findings in
hookSpecificOutput.additionalContext. - When stderr is empty, the rewake body is the raw stdout JSON (metrics and all), not the findings text. Observed by running the hook through a wrapper that strips the warning from stderr. Writing the findings text to stderr produced a correct, readable notice.
Repro
- In a desktop-app session with the plugin enabled, commit a file with an obvious issue, e.g.:
```python
from flask import Flask, request
import subprocess
app = Flask(__name__)
@app.route("/run")
def run():
return subprocess.check_output(request.args["cmd"], shell=True)
```
- Wait for the commit-review rewake. When the agentic review answers, the body is the connectors warning, not the findings.
Suggested fix
- For PostToolUse asyncRewake, also write the findings text to stderr (as the Stop path already does), so the body is the findings whatever stdout holds.
- Pass a
stderrcallback to the agenticClaudeAgentOptions(as the 3P path does), so the inner CLI's startup warnings can't leak into the hook's stderr.