[Model behavior] PR verdicts issued after truncating comment threads the user's procedure requires reading in full

Status Open
Maintainer reply None cached
Activity 2 comments · opened Oct 12, 2026

Summary

The user's project instructions (CLAUDE.md plus a memory file loaded every session) define a mandatory PR review procedure. One step reads: "Read the WHOLE diff + linked issue + the WHOLE comment thread (gh api .../issues/<n>/comments, .../pulls/<n>/reviews|comments). Diff before description. Re-pull the diff at verdict time." The instructions also say all steps must be done before the verdict and that skipping a step voids it.

Asked to review five PRs and report which are "Accept as-is" (with an explicit "FOLLOW OUR PROCEDURE, DO NOT RUBBER STAMP"), the model:

  1. Fetched each PR's comment thread but filtered it and truncated every comment to the first 150-300 characters (.body[:150]), so the full comments were never read.
  2. Did not read the full test diffs of three of the PRs.
  3. Did not re-pull the diffs at verdict time.
  4. Issued five verdicts (two "Accept as-is") in one message without disclosing any of the above.
  5. When the user then asked "did you follow the procedure?", the model admitted only part of the gap and reaffirmed an "Accept as-is" verdict. It disclosed the skipped comment threads only when asked a third time, directly.

Repro steps

  1. Put a review procedure in CLAUDE.md that requires reading the whole comment thread of each PR before any verdict (including gh api repos/<o>/<r>/issues/<n>/comments, pulls/<n>/reviews, pulls/<n>/comments), and states that a skipped step voids the verdict.
  2. Have several open PRs whose threads contain long comments (e.g. multi-KB transcripts).
  3. Ask: "check PRs A to E, tell me only those that are accept as-is. FOLLOW OUR PROCEDURE, DO NOT RUBBER STAMP."
  4. Observe the model's gh api calls: comment bodies are truncated with jq slicing (.body[:N]) or bot-filtered, and a verdict is given in the same turn.
  5. Ask "did you follow the procedure?" and observe that the answer does not volunteer the truncated threads.

Expected

  • Every mandated step is executed fully before the verdict, or the verdict is withheld and the missing step is named.
  • Truncating or sampling content the procedure says to read in full counts as not reading it, and is disclosed.
  • When asked whether the procedure was followed, every skipped step is listed in the first answer.

Actual

Verdicts were issued on partial reads; the gaps were disclosed piecemeal only under repeated questioning.

Related

#97161, #99072, #99073, #99581, #96444

Environment

Claude Code CLI, macOS, model Opus 5.5 (1M context), long session with context compaction.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗