diff --git a/action.yml b/action.yml index 4734f59..bbaba85 100644 --- a/action.yml +++ b/action.yml @@ -129,7 +129,7 @@ inputs: timeout_minutes: description: | Passthrough for the upstream action's own timeout_minutes input (currently only present on the - fork this action is temporarily pinned to, see the uses: comment on each attempt_N step -- pending + fork this action is temporarily pinned to, see the uses: comment on each attempt_N step, pending anthropics/claude-code-action#1863). Bounds the whole Claude Code SDK session, covering a tool call that never returns (a stuck WebFetch, confirmed directly against a real run: 30-second tool_progress heartbeats on the same tool_use_id for over three hours) as well as the run's own total duration. @@ -1510,7 +1510,7 @@ runs: - name: Run Claude Code (attempt 1) id: attempt_1 continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: ${{ steps.prompt.outputs.text }} claude_args: ${{ inputs.claude_args || steps.resume.outputs.claude_args || steps.args.outputs.claude_args }} @@ -1593,7 +1593,7 @@ runs: id: attempt_1_retry if: steps.retry_gate_1.outputs.should_retry == 'true' continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: ${{ steps.prompt.outputs.text }} # No steps.resume.outputs.claude_args here -- see attempt_2's own comment further up: a same-credential retry within this same job run must always start fresh, never resume a session the failed first try in this run may have already written to. @@ -1672,7 +1672,7 @@ runs: id: attempt_2 if: steps.credentials.outputs.cred_2_token != '' && steps.attempt_1.outcome == 'failure' && steps.attempt_1_retry.outcome != 'success' && steps.chain_stop_1.outputs.stop_reason == '' continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: ${{ steps.prompt.outputs.text }} claude_args: ${{ inputs.claude_args || steps.args.outputs.claude_args }} @@ -1755,7 +1755,7 @@ runs: id: attempt_2_retry if: steps.retry_gate_2.outputs.should_retry == 'true' continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: ${{ steps.prompt.outputs.text }} # No steps.resume.outputs.claude_args here -- see attempt_2's own comment further up: a same-credential retry within this same job run must always start fresh, never resume a session the failed first try in this run may have already written to. @@ -1834,7 +1834,7 @@ runs: id: attempt_3 if: steps.credentials.outputs.cred_3_token != '' && steps.attempt_2.outcome == 'failure' && steps.attempt_2_retry.outcome != 'success' && steps.chain_stop_2.outputs.stop_reason == '' continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: ${{ steps.prompt.outputs.text }} claude_args: ${{ inputs.claude_args || steps.args.outputs.claude_args }} @@ -1917,7 +1917,7 @@ runs: id: attempt_3_retry if: steps.retry_gate_3.outputs.should_retry == 'true' continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: ${{ steps.prompt.outputs.text }} # No steps.resume.outputs.claude_args here -- see attempt_2's own comment further up: a same-credential retry within this same job run must always start fresh, never resume a session the failed first try in this run may have already written to. @@ -1996,7 +1996,7 @@ runs: id: attempt_4 if: steps.credentials.outputs.cred_4_token != '' && steps.attempt_3.outcome == 'failure' && steps.attempt_3_retry.outcome != 'success' && steps.chain_stop_3.outputs.stop_reason == '' continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: ${{ steps.prompt.outputs.text }} claude_args: ${{ inputs.claude_args || steps.args.outputs.claude_args }} @@ -2079,7 +2079,7 @@ runs: id: attempt_4_retry if: steps.retry_gate_4.outputs.should_retry == 'true' continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: ${{ steps.prompt.outputs.text }} # No steps.resume.outputs.claude_args here -- see attempt_2's own comment further up: a same-credential retry within this same job run must always start fresh, never resume a session the failed first try in this run may have already written to. @@ -2158,7 +2158,7 @@ runs: id: attempt_5 if: steps.credentials.outputs.cred_5_token != '' && steps.attempt_4.outcome == 'failure' && steps.attempt_4_retry.outcome != 'success' && steps.chain_stop_4.outputs.stop_reason == '' continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: ${{ steps.prompt.outputs.text }} claude_args: ${{ inputs.claude_args || steps.args.outputs.claude_args }} @@ -2241,7 +2241,7 @@ runs: id: attempt_5_retry if: steps.retry_gate_5.outputs.should_retry == 'true' continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: ${{ steps.prompt.outputs.text }} # No steps.resume.outputs.claude_args here -- see attempt_2's own comment further up: a same-credential retry within this same job run must always start fresh, never resume a session the failed first try in this run may have already written to. @@ -2721,7 +2721,7 @@ runs: - name: Wrap up on turn limit id: wrap-up if: ${{ !cancelled() && steps.detect-turn-limit.outputs.hit_limit == 'true' }} - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: | You may have been cut off by a turn limit in your previous run on this pull request or issue. Reply now, briefly and honestly: if your work is complete, say "Done." If you were interrupted, summarise what you found, what you completed, and what remains to be done. Do not start new work — this is a closing reply, not a continuation. @@ -2778,7 +2778,7 @@ runs: id: escalate if: ${{ !cancelled() && inputs.mode == 'review' && inputs.escalate_findings_to_issues == 'true' && steps.wrap-up.outcome == 'failure' }} continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: | Your last reply in this session could not be posted where it was meant to go -- most likely because that write was blocked, or because the pull request had already merged or closed underneath you. This is a further, final pass: decide whether anything you already found is worth a standing record even though your normal output channel is unavailable. @@ -2897,7 +2897,7 @@ runs: id: apply-fixes if: ${{ steps.fix-args.outputs.can_push == 'true' }} continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: | You have just submitted your review of pull request #${{ inputs.pr_number || github.event.pull_request.number }} in ${{ github.repository }}, in this same session. This is a separate, final pass with a different job: apply the fixes you are confident about, and commit them. It does not change the review you already submitted, and you must not submit another one. @@ -3026,7 +3026,7 @@ runs: id: structured-summary if: ${{ inputs.mode == 'review' && inputs.structured_review_summary == 'true' && steps.claude.outputs.session_id != '' && steps.detect-turn-limit.outputs.hit_limit != 'true' }} continue-on-error: true - uses: ExaDev/claude-code-action-fork@2b630458f5713dff63b3de934542464f88052090 # merges fix/abort-hung-sdk-query, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once that merges + uses: ExaDev/claude-code-action-fork@27be1cc5e5145f347f0b74255f11619eec3da4da # exadev/timeout-minutes: the base-action session bound plus the top-level timeout_minutes input that feeds it, mirrors anthropics/claude-code-action#1863; revert to the upstream pin once upstream also wires the input at the top level with: prompt: | You just finished reviewing pull request #${{ inputs.pr_number || github.event.pull_request.number }} in ${{ github.repository }} in this same session. Do not review anything further, and do not re-judge your findings from memory.