Skip to content

ci(github-action): update action anthropics/claude-code-action ( v1.0.271 ➔ v1.0.275 ) - #436

Merged
mrdynamo merged 1 commit into
mainfrom
renovate/anthropics-claude-code-action-1.x
Nov 13, 2026
Merged

mrdynamo merged 1 commit into
mainfrom
renovate/anthropics-claude-code-action-1.x

Conversation

@robot-rosey

@robot-rosey robot-rosey Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change
anthropics/claude-code-action action patch v1.0.271 → v1.0.275

Release Notes

anthropics/claude-code-action

v1.0.275

Compare Source

What's Changed

Other changes

Full Changelog: anthropics/claude-code-action@v1.0.274...v1.0.275

v1.0.274

Compare Source

What's Changed

Other changes

Full Changelog: anthropics/claude-code-action@v1.0.273...v1.0.274

v1.0.273: (breaking changes)

Compare Source

What's Changed

⚠️ Breaking changes
Other changes

Full Changelog: anthropics/claude-code-action@v1.0.272...v1.0.273

⚠️ Upgrade notes: new security defaults

This release tightens what a Claude session can do, especially on content from people without write access. Workflows on @v1 get these changes automatically. Most keep working as they are, but check the items below if yours runs tests on outside pull requests, uses later steps after the action, or relies on --allowedTools as a strict list.

Sessions start in auto mode

A safety review now decides tool calls that no allow rule covers. Calls that used to be denied can run if the review passes, so --allowedTools is no longer a strict list. Workflows with a prompt can also edit workspace files without an allow rule.

Opt out: set the earlier mode in claude_args: --permission-mode acceptEdits for @claude mentions, or --permission-mode default for workflows with a prompt.

Sessions keep the earlier defaults if you set allowed_non_write_users, allowed_bots, a custom ANTHROPIC_BASE_URL or path_to_claude_code_executable. The same applies if your settings input is a file path, or sets a base URL or another permission mode.

Code-running commands are denied on outside pull requests

If a pull request's author doesn't have write access, common commands such as npm test and bun install are denied, even if claude_args allows them. The run still succeeds, so check the log for a warning.

Opt out: restrict_untrusted_prs: false. This lets code from that pull request run in a job that holds your workflow's tokens.

Only trusted text and runs start a session
  • Slash commands and the trusted request come only from text the person who triggered the run wrote. Claude still reads a labeled or assigned issue's body for context.
  • Editing or deleting someone else's comment or review no longer starts a run.
  • With prompt and track_progress, label_trigger and assignee_trigger now apply.
  • workflow_run also checks the owner of the fork the run came from.
  • A run started by a bot's activity on a pull request also needs that pull request's author to have write access or be an allowed bot.

Adjust:

  • If your workflow filters labels itself, set label_trigger to your label, or to "" to accept any label.
  • For workflow_run on outside contributions, add those users to allowed_non_write_users and pass github_token.

There's no opt-out for the rest.

A session can't leave anything behind for later steps

GITHUB_ENV, GITHUB_PATH and git config are restored when the session ends, so a session's changes to them no longer reach later steps. Token revocation also ignores ~/.curlrc, including a proxy set there.

Git hooks are also off from before the checkout on pull requests covered by restrict_untrusted_prs, so a push Claude makes on one of those won't upload Git LFS objects.

Adjust: pass values to later steps with GITHUB_OUTPUT or --json-schema. There's no opt-out.

No token in .git/config when allowed_bots is set

These workflows now use the same credential helper as allowed_non_write_users, and it only answers for your GitHub server.

Adjust: a later step that pushes through origin, or fetches from it on a private repository, needs its own credentials: GH_TOKEN, GIT_ASKPASS, a credential saved for the username x-access-token, or its own remote URL. There's no opt-out.

Stricter git commands in @claude runs
  • Commits go through a wrapper that rejects flags outside a short list, including --amend, --no-verify, --author and flags that read a file.
  • Pushes can't be forced and only update the branch the session was set up on: a new branch, or the open pull request's branch.
  • A deny rule for git commit or git push must be in claude_args to cover these wrappers. One in a settings file doesn't.

Opt out: add your own rule in claude_args, such as Bash(git commit:*) or Bash(git push:*). This brings back what the wrappers block for that workflow.

Signed commits from prompt runs go to their own branch

With use_commit_signing, a run on an issue now commits to issue-N. A run on a pull request commits to its branch, or to pr-N if that branch isn't known to be in this repository. They used to reach the default branch or a branch named by a fork.

Opt out: set CLAUDE_BRANCH in the step's env to choose the branch.

v1.0.272

Compare Source

What's Changed

Full Changelog: anthropics/claude-code-action@v1.0.271...v1.0.272


Configuration

📅 Schedule: (in timezone America/Chicago)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

@clanker-claude clanker-claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

anthropics/claude-code-action: v1.0.271 → v1.0.272

Verdict: Safe to merge

This release is documentation-and-test-only. The single upstream commit — anthropics/claude-code-action PR #1963, "Pass structured output to shell steps through env" (https://togithub.com/anthropics/claude-code-action/pull/1963) — touches only docs/usage.md, one example workflow, the test workflow of the upstream project, and adds a regression test. Verified against the upstream compare for v1.0.271...v1.0.272: no changes to action.yml, base-action/action.yml, package.json (so the bundled @anthropic-ai/claude-agent-sdk dependency is unchanged), or anything under src/. The runtime behavior and input schema of the action are identical to v1.0.271, and the pinned SHA matches the v1.0.272 tag.

Breaking changes:

  • None.

Deprecations:

  • None.

New features worth adopting:

  • None required. The only substance upstream is guidance for consumers of the structured_output output: pass the value into a shell step via env: instead of interpolating it directly into a run: script, since GitHub substitutes a template expression into the script before the shell reads it, and a quote in the Claude answer can break or inject into the script.
  • Not applicable to this repository: structured_output is never used here — there is no --json-schema in claude_args and no structured_output/fromJSON reference anywhere in the repository. The new upstream regression test only scans workflows, examples, and docs maintained by the upstream project, so it imposes nothing on consumers.
  • Worth remembering if structured output is ever adopted: upstream notes that Linux caps a single environment variable at 128 KiB, so an oversized structured output passed via env: fails the step with "Argument list too long".

Impact on this repository:

  • The only consumer is .github/workflows/renovate-review.yaml. Every input it passes (settings, github_token, anthropic_api_key, show_full_output, allowed_bots, claude_args, prompt) is unchanged in this release, and the prompt is plain prose with no structured output — the change is inert for this workflow.
  • The action installs the Claude Code CLI at runtime rather than pinning it inside the action, so this bump carries no CLI version change. The CLI pin managed by mise in home/dot_config/mise/private_config.toml is a separate Renovate-managed stream and needs no alignment here.

Sources consulted:

@robot-rosey
robot-rosey Bot force-pushed the renovate/anthropics-claude-code-action-1.x branch from acf7a02 to 7283c0d Compare November 12, 2026 20:00
@robot-rosey robot-rosey Bot changed the title ci(github-action): update action anthropics/claude-code-action ( v1.0.271 ➔ v1.0.272 ) ci(github-action): update action anthropics/claude-code-action ( v1.0.271 ➔ v1.0.273 ) Nov 12, 2026

@clanker-claude clanker-claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

anthropics/claude-code-action: v1.0.271 → v1.0.273

Verdict: Safe to merge

v1.0.272 was already covered by the earlier review on this PR; nothing about it changed. v1.0.273 is the substantive release — a security-hardening release that adds new defaults for permission mode, command execution, and credential handling.

This repository has exactly one consumer of the action: .github/workflows/renovate-review.yaml. It runs on pull_request events from the dependency bot, passes a static prompt (so the action runs in agent mode), sets allowed_bots, and points the CLI at a custom Anthropic-compatible base URL on an internal gateway. The bundled @anthropic-ai/claude-agent-sdk is unchanged (^0.3.322 at both tags), so there is no inner CLI/SDK version change riding along.

Every new default was traced to the v1.0.273 source. All of them are either inert for this workflow or apply without removing anything the workflow needs.

Breaking changes:

  • None requiring changes in this repository. The upstream defaults that are live here are covered below so the reasoning is on the record.

    • Sessions start in auto mode by default — not in effect here. Upstream's defaultsToAutoMode() (src/modes/permission-mode.ts) returns false when ALLOWED_BOTS or ANTHROPIC_BASE_URL is present, and docs/usage.md documents the same two exemptions. This workflow sets both (allowed_bots, plus a custom base URL for the internal gateway), so the session keeps the earlier permission defaults and --allowedTools remains a strict list. No change needed in .github/workflows/renovate-review.yaml.

    • Code-running commands are denied on pull requests from authors without write access — live, but harmless. The new restrict_untrusted_prs input defaults to true, and upstream deliberately treats a bot author as untrusted even when that bot is listed in allowed_bots, so the deny list applies to every run of this workflow. The list covers package managers, test runners, interpreters, shells, git config and git -c; it does not intersect this workflow's allow rules (gh …, git log, curl), so nothing the review needs is revoked. Expect one advisory log line reporting that 8 Bash rules in claude_args fall outside the deny list — the run still succeeds. Setting restrict_untrusted_prs: false would disable it, but that is not recommended.

    • The token is kept out of .git/config when allowed_bots is set — live, but harmless. Because allowed_bots is set, the action now strips the checkout credential and installs a credential helper that reads the token from the environment instead of embedding it in the remote URL. The Claude Code Action is the last step in the job, so no later step needs git credentials; inside the session, gh pr review authenticates through the token already in the environment, and git log is a local read.

    • A session can no longer leave anything behind for later steps — live, but harmless. GITHUB_ENV, GITHUB_PATH and git config are restored when the session ends. The Claude Code Action is the final step in the job, so there is nothing downstream to be affected.

    • Only trusted text and runs start a session — not applicable. The workflow triggers on pull_request events with a static prompt; it never listens for comments, reviews, issue labels or assignments, so the new comment/label/assignee gating does not apply here. The one path that does touch this workflow — the PR body being eligible as a request — still works: the PR author and the event actor are the same bot account (verified against the workflow run payload), and upstream normalizes the [bot] suffix on both sides before comparing them.

    • Stricter git commit/git push wrappers, and signed commits landing on their own branch — not applicable. use_commit_signing is not set, and this workflow never asks Claude to commit or push anything.

    • label_trigger/assignee_trigger now apply to prompt workflows — not applicable. track_progress is not set, and the workflow listens only to pull_request events.

Deprecations:

  • None.

New features worth adopting:

  • Pin --permission-mode default in claude_args — the --allowedTools list in this workflow is a genuine control (it is what keeps the review bot to read-only inspection plus a fixed set of gh/curl calls), and it stays strict only indirectly, via the allowed_bots and base-URL exemptions above. Adding --permission-mode default to claude_args in .github/workflows/renovate-review.yaml makes that guarantee explicit and independent of upstream's opt-out heuristics — which also matters here, since auto mode requires a supported model and this workflow runs a third-party model through a gateway. Behavior is unchanged either way; this is hardening, not a fix.
  • No other new inputs are needed. restrict_untrusted_prs already defaults to the safe value, so there is nothing to pin.

Impact on this repository:

  • The only consumer is .github/workflows/renovate-review.yaml. Every input it passes (settings, github_token, anthropic_api_key, show_full_output, allowed_bots, claude_args, prompt) is unchanged in this release, and the prompt is plain prose with no structured output.
  • The action installs the Claude Code CLI at runtime rather than pinning it inside the action, so this bump carries no CLI version change. The CLI pin managed by mise is a separate Renovate-managed stream and needs no alignment here.

Sources consulted:

@robot-rosey
robot-rosey Bot force-pushed the renovate/anthropics-claude-code-action-1.x branch from 7283c0d to dee0293 Compare November 12, 2026 23:01
@robot-rosey robot-rosey Bot changed the title ci(github-action): update action anthropics/claude-code-action ( v1.0.271 ➔ v1.0.273 ) ci(github-action): update action anthropics/claude-code-action ( v1.0.271 ➔ v1.0.274 ) Nov 12, 2026

@clanker-claude clanker-claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

anthropics/claude-code-action: v1.0.271 → v1.0.274

Verdict: Changes required before merge

v1.0.272 and v1.0.273 were already reviewed on this PR and have not changed since. This review covers v1.0.274 only.

Breaking changes:

  • The Claude Code CLI the action installs moves from 2.1.322 to 2.1.323. This is the first release in this PR that changes action code: the CLI version is pinned in base-action/action.yml and in src/entrypoints/run.ts, and the action installs that version at runtime. The bundled @anthropic-ai/claude-agent-sdk also moves from 0.3.322 to 0.3.323; its own notes are "parity with Claude Code v2.1.323" plus SDK-only additions, and this repository does not use the SDK directly.

  • Claude Code now assumes a 1M-token context window for a model ID that it does not recognize, instead of 200K — introduced in CLI v2.1.323. The same release notes spell out the consequence: on a model from another vendor with a smaller window, the session "can fail every turn until /clear".

    This affects .github/workflows/renovate-review.yaml. The review job runs the CLI against a third-party model ID that Claude Code does not recognize, behind a custom Anthropic-compatible base URL on an internal gateway, so the CLI sizes the session against its assumed window rather than the real window of that model. With the assumption now at 1M, the CLI no longer compacts before the actual limit of the gateway; the oversized request is rejected and the session then fails on every following turn until it is cleared, taking the review with it. The prompt of this job pushes the session in that direction — it tells the reviewer to read changelogs and consult documentation sites, and some of those pages are very large.

    Fix — tell the CLI which window to assume: either the real limit of the model, with CLAUDE_CODE_MAX_CONTEXT_TOKENS, or the previous 200K, with CLAUDE_CODE_DISABLE_1M_CONTEXT=1. The recommendation from upstream in the 2.1.323 notes is the latter. Either key goes in the env: block of the "Claude Code Action" step in .github/workflows/renovate-review.yaml, next to ANTHROPIC_BASE_URL:

    env:
    ANTHROPIC_BASE_URL: "..."
    CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"

    CLAUDE_CODE_MAX_CONTEXT_TOKENS applies on its own to an unrecognized ID that does not start with claude- and carries no 1M suffix, which is the case here. The step-level env: block is the environment that starts the CLI; the same key can alternatively go in the env map of the settings input of the action, which this workflow already uses for its model variables. (There is also CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1, which stops Claude Code from compacting against an assumed window at all — but upstream notes that it does not recover when a gateway rewrites the error, so it is not the first choice here.)

    One caveat: the published model-configuration and environment-variable docs still describe a 200K assumption for unrecognized model IDs. The newest CLI version they reference is 2.1.321, so they predate 2.1.322 and 2.1.323 and the release notes are the newer source. Confirming the assumed window in the first run after this bump would close the loop.

  • The same bump reaches the locally managed CLI. home/dot_config/mise/private_config.toml pins claude = "2.1.322", and home/private_dot_claude/private_settings.json.tmpl sets the default session model to the same third-party model ID. That pin is a separate Renovate-managed stream, but once it moves to 2.1.323 the same issue applies to interactive sessions; adding the same variable to the env block of that template now would cover both.

Deprecations:

  • None in v1.0.274.

New features worth adopting:

  • Letting Claude read CI results on outside pull requests — upstream PR #2009 (https://togithub.com/anthropics/claude-code-action/pull/2009) is the headline change of v1.0.274, but it touches only the workflows and documentation of the upstream project. No action code changed, so consumers get no new behavior from it.
  • What it does document is worth knowing for this workflow: the github_ci MCP server (get_ci_status, get_workflow_run_details, download_job_log) is only started in agent mode when mcp__github_ci… appears in --allowedTools, and upstream recommends denying the two tools that read log and job text on pull requests from authors without write access, because a pull request controls that text.
  • Not needed here. The workflow already grants actions: read, but that alone does not start the CI server in agent mode — the claude_args allow list has no mcp__github_ci… entry — so that permission currently has no effect for this job. If CI-result reporting is wanted later, the shape recommended by upstream is mcp__github_ci__get_ci_status in --allowedTools, with mcp__github_ci__download_job_log,mcp__github_ci__get_workflow_run_details in --disallowedTools.

Sources consulted:

@robot-rosey
robot-rosey Bot force-pushed the renovate/anthropics-claude-code-action-1.x branch from dee0293 to e689087 Compare November 13, 2026 00:00
@robot-rosey robot-rosey Bot changed the title ci(github-action): update action anthropics/claude-code-action ( v1.0.271 ➔ v1.0.274 ) ci(github-action): update action anthropics/claude-code-action ( v1.0.271 ➔ v1.0.275 ) Nov 13, 2026

@clanker-claude clanker-claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

anthropics/claude-code-action: v1.0.271 → v1.0.275

Verdict: Changes required before merge

v1.0.272, v1.0.273 and v1.0.274 were covered by the earlier reviews on this PR and have not changed since. This review covers v1.0.275 (upstream PR #2018) and confirms the status of the one item the v1.0.274 review left open. v1.0.275 itself introduces nothing new to fix in this repository; the outstanding item is the one already raised.

Breaking changes:

  • None introduced by v1.0.275. The release is a single upstream commit that makes the git add / git rm / git commit / git push wrapper scripts take their settings from files the action writes rather than from the session's environment, and that moves the session's git settings out of GIT_CONFIG_* environment variables into the repository's own config (plus safe.bareRepository=explicit in the global config for the session).

    • Not applicable to .github/workflows/renovate-review.yaml. That workflow's claude_args allow list contains no git add, git commit, git push or git rm; agent mode — which this workflow uses, because it passes a static prompt — never adds the git wrappers to the allow list (only tag mode does, at src/modes/tag/index.ts); and a static prompt bypasses the action's generated prompt and its commit instructions entirely. The one git command the session can run, git log, is not wrapped. The change is inert here.
  • Status of the item left open by the v1.0.274 review — still outstanding. v1.0.275 does not change the Claude Code CLI the action installs: base-action/action.yml pins 2.1.323 at both v1.0.274 and v1.0.275, and the compare between the two tags touches no version file. So the CLI behaviour the v1.0.274 review flagged — an unrecognised model ID being assumed to have a 1M-token window instead of 200K — is still live in this PR, and this workflow is exactly the case it applies to: the job runs a third-party model ID that Claude Code does not recognise, behind a custom Anthropic-compatible base URL on an internal gateway. The branch still carries no CLAUDE_CODE_DISABLE_1M_CONTEXT or CLAUDE_CODE_MAX_CONTEXT_TOKENS setting, so the session sizes itself against a window the gateway's model does not have.

    • Fix: pin the window the CLI assumes, in the env: block of the "Claude Code Action" step in .github/workflows/renovate-review.yaml, next to the existing base-URL setting:

      env:
        ANTHROPIC_BASE_URL: "<unchanged>"
        CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"

      CLAUDE_CODE_DISABLE_1M_CONTEXT=1 keeps the previous 200K assumption and is the option upstream's own 2.1.323 notes recommend for other vendors' models. CLAUDE_CODE_MAX_CONTEXT_TOKENS is the alternative if the real limit of the model is known. The same key can alternatively go in the env map of the action's settings input, which this workflow already uses for its model variables — that is the more consistent placement for this repository, since the CLI picks these up the same way it already picks up CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC.

Deprecations:

  • None.

New features worth adopting:

  • None in v1.0.275. The upstream change is hardening only: no new action inputs, no new outputs, and no behaviour a consumer can opt into.

Impact on this repository:

  • The action's only consumer here is .github/workflows/renovate-review.yaml. The other two workflows in .github/workflows/ do not use it and both run on GitHub-hosted runners.
  • Every input the workflow passes (settings, github_token, anthropic_api_key, show_full_output, allowed_bots, claude_args, prompt) is unchanged in v1.0.275.
  • The action installs the Claude Code CLI at runtime and pins it in base-action/action.yml; that pin is unchanged at 2.1.323 in v1.0.275, so this bump carries no CLI version change of its own. The CLI version managed by mise in home/dot_config/mise/private_config.toml is a separate Renovate-managed stream and needs no alignment here.
  • One new, non-blocking side effect of v1.0.275 worth knowing: the action now writes safe.bareRepository=explicit to the runner's global git config for the duration of the session, and upstream's own docs/security.md warns that if the run is cancelled before the restore, that setting stays in the global config of a self-hosted runner that keeps its home directory. This workflow runs on a persistent self-hosted runner with a 30-minute job timeout, and the review step is the one that would be cancelled, so a timed-out run can leave the setting behind on the runner. It is a hardening setting — it only stops git from auto-discovering a bare repository in a plain folder — and none of this repository's workflows work in a bare repository, so there is no practical impact. Worth knowing only so it is not mistaken for a change to the repository itself.

Sources consulted:

@robot-rosey
robot-rosey Bot force-pushed the renovate/anthropics-claude-code-action-1.x branch from e689087 to 26494be Compare November 13, 2026 17:27
@mrdynamo
mrdynamo dismissed stale reviews from clanker-claude[bot] and clanker-claude[bot] November 13, 2026 18:36

Dismissed at owner request: superseded by owner approval on the current head.

@mrdynamo
mrdynamo merged commit e6d3453 into main Nov 13, 2026
2 checks passed
@robot-rosey
robot-rosey Bot deleted the renovate/anthropics-claude-code-action-1.x branch November 13, 2026 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant