This repository was archived by the owner on Jun 25, 2026. It is now read-only.
claude-code-review: add show-full-output input to surface SDK errors - #1
Merged
Conversation
When the claude-code-action model call fails, the action hides its SDK output
("full output hidden for security"), so an auth/usage/credit rejection — which
surfaces as a 0-cost, single-turn result with is_error:true — is unreadable
from a consumer's failing review check. The reusable workflow exposed no way to
flip the action's show_full_output flag, so diagnosing it meant forking the
workflow (and the action's own guards block a throwaway side-channel: it rejects
push events and requires the workflow to match the default branch).
Add an optional show-full-output input (default false, preserving current
behavior) and wire it through to the action, so a consumer can toggle one input
to read the real error instead.
Reported from Lacaedemon/sparta#207, where a docs PR's review check failed
repeatedly with exactly this opaque signature.
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
d-morrison
pushed a commit
to Morrison-Lab/ai-config
that referenced
this pull request
Jun 25, 2026
…212) * ums: record the team-0-stationary scenario lesson in sparta memory Adds the operational lesson from PR #200 to memories/repo/sparta.md: only team 1 auto-advances, so a demo scenario must order team 0 to move early, and engagement timing should be worked out on paper before spending a CI run. The mechanics reference tables (spawn layout, speeds, order-target semantics) now live with the code in sparta's demos/README.md and REPLAY.md (Lacaedemon/sparta#207), not in memory, so they don't rot silently when the game's constants change. * ums: diagnosing opaque claude-review failures + memory-vs-docs rule - tools.md: correct the is_error/quota note (the gha#102 'warn instead of fail' guard was NOT in effect on sparta#207's d-morrison/gha@v1 nor in dem-extra1/gha — still exits 1 red); add how to read the hidden SDK error via the new show-full-output input (dem-extra1/gha#1) and why a throwaway diagnostic workflow can't reach the action (push rejected; default-branch validation). - preferences.md: code-derived reference tables belong in the repo's own docs next to the code, not in central ai-config memory (they rot); keep the lesson in memory and point at the in-repo docs. --------- Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
When the
claude-code-actionmodel call fails inside the SDK, the action hides its output:So a consumer whose
claude-reviewcheck goes red sees only the opaque guard result:{ "type": "result", "subtype": "success", "is_error": true, "duration_ms": ~2100, "num_turns": 1, "total_cost_usd": 0 }(the existing "Fail the check if the review did not complete" step correctly turns this into a red check) — but no way to read the underlying API error (auth / usage-limit / credit). The reusable workflow exposed
pr-number,prompt-addendum,checkout-submodules,allowed-bots— nothing forshow_full_output— and it didn't pass a debug flag to the action. Diagnosing meant forking the workflow, because the action's own guards block any throwaway side-channel: it rejectspushevents (Unsupported event type: push) and requires the workflow file to match the default-branch copy (Workflow validation failed … must have identical content to the … default branch).Change
show-full-outputinput (boolean, defaultfalse— no behavior change for existing callers).show_full_output: ${{ inputs.show-full-output }}.A consumer can then flip one input to read the real error in the job log instead of forking the workflow.
Why it matters
Surfaced on
lacaedemon/sparta#207: a docs-only PR's review check failed three times in a row with exactly the signature above. The two substantive checks were green and the diff was trivial, so the failure was clearly inside the review action (most likely a Claude subscription usage-limit on theCLAUDE_CODE_OAUTH_TOKEN) — but confirming it was impossible without this toggle.Notes
d-morrison/gha@v1. If this repo is a mirror/fork of that, this change should land there (or be transferred) so it reaches consumers likespartaon the@v1tag. Flagging for the maintainer.🤖 Generated with Claude Code
https://claude.ai/code/session_01DQTe2ufAdbUBj7VHRmi3o5
Generated by Claude Code