Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
1b422b3
chore: bump Claude Code to 2.1.78 and Agent SDK to 0.2.77
actions-user Mar 17, 2026
9ddce40
Restore .claude/ and .mcp.json from PR base branch before CLI runs (#…
km-anthropic Mar 18, 2026
1ba15be
Remove redundant git status/diff/log from tag mode allowlist (#1075)
ddworken Mar 18, 2026
df37d2f
chore: bump Claude Code to 2.1.79 and Agent SDK to 0.2.79
actions-user Mar 18, 2026
6062f37
chore: bump Claude Code to 2.1.81 and Agent SDK to 0.2.81
actions-user Mar 20, 2026
ff9acae
Auto-set subprocess env scrub when allowed_non_write_users is configu…
OctavianGuzu Mar 23, 2026
0ee1bee
chore: bump Claude Code to 2.1.83 and Agent SDK to 0.2.83
actions-user Mar 25, 2026
3ac52d0
chore: bump Claude Code to 2.1.84 and Agent SDK to 0.2.84
actions-user Mar 26, 2026
094bd24
chore: bump Claude Code to 2.1.85 and Agent SDK to 0.2.85
actions-user Mar 26, 2026
e7b588b
chore: bump Claude Code to 2.1.86 and Agent SDK to 0.2.86
actions-user Mar 27, 2026
88c168b
chore: bump Claude Code to 2.1.87 and Agent SDK to 0.2.87
actions-user Mar 29, 2026
7225f04
chore: bump Claude Code to 2.1.88 and Agent SDK to 0.2.88
actions-user Mar 31, 2026
32156b1
Add subprocess isolation setup and git credential helper (#1132)
OctavianGuzu Mar 31, 2026
bee87b3
chore: bump Claude Code to 2.1.89 and Agent SDK to 0.2.89
actions-user Apr 1, 2026
408a40e
Pin Claude Code to 2.1.87 (#1142)
ashwin-ant Apr 1, 2026
c281e17
fix: fall back to repo default_branch instead of hardcoded "main" (#1…
ashwin-ant Apr 1, 2026
58dbe8e
chore: bump Claude Code to 2.1.90 and Agent SDK to 0.2.90
actions-user Apr 1, 2026
c95e735
Fix subprocess isolation install step never running (#1148)
OctavianGuzu Apr 2, 2026
ba026a3
Pass env to execFileSync git calls (#1151)
OctavianGuzu Apr 2, 2026
0432df8
chore: bump Claude Code to 2.1.91 and Agent SDK to 0.2.91
actions-user Apr 3, 2026
1eddb33
chore: bump Claude Code to 2.1.92 and Agent SDK to 0.2.92
actions-user Apr 4, 2026
85133ee
fix: skip token revocation when no token was acquired (#918)
Dave-London Apr 5, 2026
263993d
Use env vars for workflow_run context values in example workflows (#1…
ddworken Apr 5, 2026
27f549a
docs: document include/exclude_comments_by_actor inputs (#1130)
yuribodo Apr 5, 2026
21b0f0f
fix: use correct fallback type for reviewData in fetcher (#1034)
MaxwellCalkin Apr 5, 2026
f37c786
Strip OIDC token request env vars from Claude session (#1011)
chyipin Apr 5, 2026
d8af4e9
fix: skip retries for non-retryable errors in retryWithBackoff (#1082)
ei-grad Apr 5, 2026
d5db820
fix: restore ripgrep execute bits after bun install --production (#1163)
qozle Apr 5, 2026
b15d475
fix: allow # in branch names for PR checkout and base restore (#1167)
qozle Apr 5, 2026
f328a5c
fix: prevent hang in restoreConfigFromBase on repos with .gitmodules …
qozle Apr 5, 2026
eb8baa4
fix: strip shell comment lines before parsing claude_args (#1055)
VoidChecksum Apr 5, 2026
5150ea9
fix: snapshot PR's .claude/ to .claude-pr/ before security restore (#…
qozle Apr 5, 2026
6685b26
chore: fix prettier formatting (#1171)
ashwin-ant Apr 5, 2026
3534c32
chore: fix prettier formatting in parse-sdk-options.test.ts (#1176)
ashwin-ant Apr 5, 2026
6e2bd52
fix: pin bun runtime config and improve log hygiene (#1174)
ashwin-ant Apr 5, 2026
0f1fe5e
fix: forward MCP_TIMEOUT, MCP_TOOL_TIMEOUT, MAX_MCP_OUTPUT_TOKENS to …
qozle Apr 5, 2026
6cad158
security: reject PATH_TO_CLAUDE_CODE_EXECUTABLE with control characte…
qozle Apr 6, 2026
3983706
chore: bump Claude Code to 2.1.94 and Agent SDK to 0.2.94
actions-user Apr 7, 2026
26ddc35
chore: bump Claude Code to 2.1.96 and Agent SDK to 0.2.96
actions-user Apr 8, 2026
b2fdd80
Use pinned bun binary for post-steps when allowed_non_write_users is …
OctavianGuzu Apr 8, 2026
2ff1acb
chore: bump Claude Code to 2.1.97 and Agent SDK to 0.2.97
actions-user Apr 8, 2026
657fb7c
chore: bump Claude Code to 2.1.98 and Agent SDK to 0.2.98
actions-user Apr 9, 2026
c26cb64
chore: bump Claude Code to 2.1.100 and Agent SDK to 0.2.98
actions-user Apr 10, 2026
b47fd72
chore: bump Claude Code to 2.1.101 and Agent SDK to 0.2.101
actions-user Apr 10, 2026
25474bf
chore: bump Claude Code to 2.1.104 and Agent SDK to 0.2.104
actions-user Apr 12, 2026
ff49ec5
Prepend system bin dirs to PATH when allowed_non_write_users is set (…
OctavianGuzu Apr 12, 2026
1c8b699
chore: bump Claude Code to 2.1.105 and Agent SDK to 0.2.105
actions-user Apr 13, 2026
65f29cf
chore: bump Claude Code to 2.1.107 and Agent SDK to 0.2.107
actions-user Apr 14, 2026
f235863
fix: handle 404 in checkHumanActor for bot/app actors
saarakelyan Apr 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/commands/label-issue.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ TASK OVERVIEW:
- If you find similar issues using ./scripts/gh.sh search, consider using a "duplicate" label if appropriate. Only do so if the issue is a duplicate of another OPEN issue.

5. Apply the selected labels:
- Use `./scripts/edit-issue-labels.sh --issue NUMBER --add-label LABEL1 --add-label LABEL2` to apply your selected labels
- Use `./scripts/edit-issue-labels.sh --add-label LABEL1 --add-label LABEL2` to apply your selected labels (issue number is read from the workflow event)
- DO NOT post any comments explaining your decision
- DO NOT communicate directly with users
- If no labels are clearly applicable, do not apply any labels
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/issue-triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ jobs:

- name: Run Claude Code for Issue Triage
uses: anthropics/claude-code-action@main
env:
CLAUDE_CODE_SCRIPT_CAPS: '{"edit-issue-labels.sh":2}'
with:
prompt: "/label-issue REPO: ${{ github.repository }} ISSUE_NUMBER: ${{ github.event.issue.number }}"
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
Expand Down
115 changes: 110 additions & 5 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,16 @@ inputs:
required: false
default: ""
allowed_non_write_users:
description: "Comma-separated list of usernames to allow without write permissions, or '*' to allow all users. Only works when github_token input is provided. WARNING: Use with extreme caution - this bypasses security checks and should only be used for workflows with very limited permissions (e.g., issue labeling)."
description: |
Comma-separated list of usernames to allow without write permissions, or '*' to allow all users.
Only works when github_token input is provided. WARNING: Use with extreme caution - this
bypasses security checks and should only be used for workflows with very limited permissions
(e.g., issue labeling).

SECURITY: Processing untrusted content exposes the workflow to prompt injection. When this
input is set, Claude does a best-effort scrub of Anthropic, cloud, and GitHub Actions secrets
from subprocess environments. This reduces but does not eliminate prompt injection risk -
only use for workflows with very limited permissions and validate all outputs.
required: false
default: ""
include_comments_by_actor:
Expand Down Expand Up @@ -185,12 +194,61 @@ runs:
run: |
cd ${GITHUB_ACTION_PATH}
bun install --production
# bun install --production strips execute bits from vendored binaries (bun issue #1140).
# Restore +x on the ripgrep binaries so the Claude Agent SDK can exec them.
find "${GITHUB_ACTION_PATH}/node_modules/@anthropic-ai/claude-agent-sdk/vendor/ripgrep" \
-name "rg" -type f -exec chmod +x {} \;

- name: Install subprocess isolation dependencies
# Install subprocess isolation dependencies when processing content from non-write users.
# Best-effort: skips on non-Linux or when sudo/apt unavailable (self-hosted runners).
if: ${{ inputs.allowed_non_write_users != '' && runner.os == 'Linux' }}
continue-on-error: true
shell: bash
run: |
if [ "${CLAUDE_CODE_SUBPROCESS_ENV_SCRUB:-}" = "0" ]; then
echo "Subprocess isolation opted out via CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=0"
exit 0
fi
if command -v apt-get >/dev/null && command -v sudo >/dev/null; then
for i in 1 2 3; do
sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends bubblewrap socat && break
echo "apt-get attempt $i failed, retrying..."
sleep 5
done
fi
# Ubuntu 24.04+ restricts unprivileged user namespaces via AppArmor.
# The sysctl doesn't exist on older kernels — that's fine.
if [ -f /proc/sys/kernel/apparmor_restrict_unprivileged_userns ] && command -v sudo >/dev/null; then
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
fi

- name: Pin bun binary for post-steps
if: ${{ inputs.allowed_non_write_users != '' }}
continue-on-error: true
shell: bash
run: |
# Keep a copy of the bun binary alongside the action's own files so
# post-steps use the same version that was on PATH at action start.
mkdir -p "$GITHUB_ACTION_PATH/bin"
cp "$(command -v bun)" "$GITHUB_ACTION_PATH/bin/bun"

- name: Prepend system bin dirs to PATH
if: ${{ inputs.allowed_non_write_users != '' && runner.os != 'Windows' }}
continue-on-error: true
shell: /bin/bash --noprofile --norc -e -o pipefail {0}
run: |
echo "/usr/bin" >> "$GITHUB_PATH"
echo "/bin" >> "$GITHUB_PATH"

- name: Run Claude Code Action
id: run
shell: bash
run: |
bun run ${GITHUB_ACTION_PATH}/src/entrypoints/run.ts
bun --no-env-file \
--config="${GITHUB_ACTION_PATH}/bunfig.toml" \
--tsconfig-override="${GITHUB_ACTION_PATH}/tsconfig.json" \
run ${GITHUB_ACTION_PATH}/src/entrypoints/run.ts
env:
# Prepare inputs
MODE: ${{ inputs.mode }}
Expand All @@ -204,6 +262,8 @@ runs:
OVERRIDE_GITHUB_TOKEN: ${{ inputs.github_token }}
ALLOWED_BOTS: ${{ inputs.allowed_bots }}
ALLOWED_NON_WRITE_USERS: ${{ inputs.allowed_non_write_users }}
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB: ${{ env.CLAUDE_CODE_SUBPROCESS_ENV_SCRUB || (inputs.allowed_non_write_users != '' && '1') || '' }}
CLAUDE_CODE_SCRIPT_CAPS: ${{ env.CLAUDE_CODE_SCRIPT_CAPS || '' }}
INCLUDE_COMMENTS_BY_ACTOR: ${{ inputs.include_comments_by_actor }}
EXCLUDE_COMMENTS_BY_ACTOR: ${{ inputs.exclude_comments_by_actor }}
GITHUB_RUN_ID: ${{ github.run_id }}
Expand Down Expand Up @@ -270,6 +330,15 @@ runs:
ANTHROPIC_DEFAULT_HAIKU_MODEL: ${{ env.ANTHROPIC_DEFAULT_HAIKU_MODEL }}
ANTHROPIC_DEFAULT_OPUS_MODEL: ${{ env.ANTHROPIC_DEFAULT_OPUS_MODEL }}

# MCP configuration — these env vars are read directly from process.env by the
# Claude CLI subprocess. They must be listed explicitly here because this step's
# env: block shadows the calling workflow's job-level env vars (GitHub Actions
# composite action behavior). Set these in your workflow's job-level env: or via
# a prior step that writes to $GITHUB_ENV.
MCP_TIMEOUT: ${{ env.MCP_TIMEOUT }}
MCP_TOOL_TIMEOUT: ${{ env.MCP_TOOL_TIMEOUT }}
MAX_MCP_OUTPUT_TOKENS: ${{ env.MAX_MCP_OUTPUT_TOKENS }}

# Telemetry configuration
CLAUDE_CODE_ENABLE_TELEMETRY: ${{ env.CLAUDE_CODE_ENABLE_TELEMETRY }}
OTEL_METRICS_EXPORTER: ${{ env.OTEL_METRICS_EXPORTER }}
Expand All @@ -281,11 +350,42 @@ runs:
OTEL_LOGS_EXPORT_INTERVAL: ${{ env.OTEL_LOGS_EXPORT_INTERVAL }}
OTEL_RESOURCE_ATTRIBUTES: ${{ env.OTEL_RESOURCE_ATTRIBUTES }}

- name: Re-prepend system bin dirs to PATH
if: ${{ always() && inputs.allowed_non_write_users != '' && runner.os != 'Windows' }}
continue-on-error: true
shell: /bin/bash --noprofile --norc -e -o pipefail {0}
env:
BASH_ENV: ""
LD_PRELOAD: ""
LD_LIBRARY_PATH: ""
NODE_OPTIONS: ""
DYLD_INSERT_LIBRARIES: ""
DYLD_PRELOAD: ""
DYLD_LIBRARY_PATH: ""
DYLD_FRAMEWORK_PATH: ""
run: |
echo "/usr/bin" >> "$GITHUB_PATH"
echo "/bin" >> "$GITHUB_PATH"
{
echo "BASH_ENV="
echo "LD_PRELOAD="
echo "LD_LIBRARY_PATH="
echo "DYLD_INSERT_LIBRARIES="
echo "DYLD_PRELOAD="
echo "DYLD_LIBRARY_PATH="
echo "DYLD_FRAMEWORK_PATH="
} >> "$GITHUB_ENV"

- name: Cleanup SSH signing key
if: always() && inputs.ssh_signing_key != ''
shell: bash
run: |
bun run ${GITHUB_ACTION_PATH}/src/entrypoints/cleanup-ssh-signing.ts
BUN_BIN="${GITHUB_ACTION_PATH}/bin/bun"
[ -x "$BUN_BIN" ] || BUN_BIN="bun"
"$BUN_BIN" --no-env-file \
--config="${GITHUB_ACTION_PATH}/bunfig.toml" \
--tsconfig-override="${GITHUB_ACTION_PATH}/tsconfig.json" \
run ${GITHUB_ACTION_PATH}/src/entrypoints/cleanup-ssh-signing.ts

- name: Post buffered inline comments
if: always() && inputs.classify_inline_comments != 'false'
Expand All @@ -297,10 +397,15 @@ runs:
PR_NUMBER: ${{ github.event.pull_request.number || github.event.issue.number }}
ANTHROPIC_API_KEY: ${{ inputs.anthropic_api_key }}
run: |
bun run ${GITHUB_ACTION_PATH}/src/entrypoints/post-buffered-inline-comments.ts
BUN_BIN="${GITHUB_ACTION_PATH}/bin/bun"
[ -x "$BUN_BIN" ] || BUN_BIN="bun"
"$BUN_BIN" --no-env-file \
--config="${GITHUB_ACTION_PATH}/bunfig.toml" \
--tsconfig-override="${GITHUB_ACTION_PATH}/tsconfig.json" \
run ${GITHUB_ACTION_PATH}/src/entrypoints/post-buffered-inline-comments.ts

- name: Revoke app token
if: always() && inputs.github_token == '' && steps.run.outputs.skipped_due_to_workflow_validation_mismatch != 'true'
if: always() && inputs.github_token == '' && steps.run.outputs.github_token != '' && steps.run.outputs.skipped_due_to_workflow_validation_mismatch != 'true'
shell: bash
run: |
curl -L \
Expand Down
2 changes: 1 addition & 1 deletion base-action/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ runs:
PATH_TO_CLAUDE_CODE_EXECUTABLE: ${{ inputs.path_to_claude_code_executable }}
run: |
if [ -z "$PATH_TO_CLAUDE_CODE_EXECUTABLE" ]; then
CLAUDE_CODE_VERSION="2.1.77"
CLAUDE_CODE_VERSION="2.1.107"
echo "Installing Claude Code v${CLAUDE_CODE_VERSION}..."
for attempt in 1 2 3; do
echo "Installation attempt $attempt..."
Expand Down
Loading
Loading