Solo Stack Kits Directory
Claude Code workflows & skills for solo consultants and freelancers

← Blog · 2026-10-30

Claude Code GitHub Action Not Working? @claude Not Responding: 16 Causes and Fixes

60-second test: open the repository's Actions tab right after you comment @claude. No run at all means GitHub never started the workflow: check causes 3 to 6. A run that fails before Claude starts usually means the actor checks rejected it (causes 7 and 8) or the secret or permissions are missing (causes 9 and 10). A green run that posted nothing is almost always automation mode writing to the run log (causes 11 and 12).

The Claude Code GitHub Action (anthropics/claude-code-action) runs Claude Code inside your own GitHub Actions workflows. It has two modes, and it picks one from your workflow file:

Interactive mode Automation mode
When The workflow has no prompt input The workflow sets a prompt input
Starts on The trigger phrase (@claude by default) in an issue or PR comment, a PR review, or the title or body of a newly opened issue Any GitHub event in on:, including a cron schedule, with no mention needed
Results go to A comment on the triggering issue or PR, updated as Claude works The workflow run log, unless the prompt tells Claude to post and it has a tool that can

In both modes the action checks who triggered the run before Claude starts, and the run fails if either check rejects it. Keep this in mind: most "@claude does nothing" reports are a workflow that never started, or one that started in the mode you didn't expect.

Setup: 2 causes

  1. /install-github-app exits or fails. The quick setup works only with github.com repositories: with a gitlab.com or bitbucket.org remote it prints a notice and exits (GitLab has its own CI/CD integration). It also needs the GitHub CLI installed and signed in with gh auth login, and you need admin access to the repository. If you don't run Claude Code locally, or the command keeps failing, use the manual setup instead: install the Claude GitHub App on the repository, add a secret, and copy examples/claude.yml from the action's repository into .github/workflows/.
  2. Setup stopped halfway. Choosing Skip for now after the app install, or pressing Esc during setup, leaves you with only some pieces in place; the closing message lists what already happened (for example a pushed branch or a saved secret). Quick setup also only opens a pull request with the workflow files: @claude works once you create and merge it. Run /install-github-app again to finish the workflow and secret steps. If the repository already has a claude.yml, the command offers Update workflow file with latest version.

@claude gets no response: 6 causes

  1. The Claude GitHub App isn't installed on this repository. An organization install can be limited to selected repositories, so check the app's repository access under GitHub Apps in the repository or organization settings.
  2. Workflows are disabled for the repository. Anthropic's troubleshooting list puts this right after the app install. Check the Actions settings for the repository (and the organization) and that the workflow file is in .github/workflows/.
  3. The comment doesn't contain the trigger phrase as a whole word. @claude must appear as a complete word: /claude or @claude-bot don't count. If the workflow sets trigger_phrase, use that phrase instead. Also look at the workflow's if: line, for example contains(github.event.comment.body, '@claude'), which stops the runner from starting at all on comments without the phrase.
  4. The workflow doesn't listen to the event you used. The minimal @claude example only triggers on: issue_comment and pull_request_review_comment (types: [created]). A mention in the title or body of a brand-new issue, or in a PR review, only reaches Claude if your on: block includes those events too. The action's examples directory has ready-made workflows for other scenarios.

The run starts, then fails before Claude does anything: 4 causes

  1. The commenter doesn't have write access. On issue and pull request events, the triggering user must have write access to the repository. To let specific users without write access trigger Claude, set allowed_non_write_users and pass your own github_token input. Events that no user authors, such as a schedule trigger, skip this check.
  2. A bot triggered the run. On every event the action rejects bot actors unless they're listed in allowed_bots; it's there to stop bots from triggering Claude in a loop. This catches scheduled runs too: GitHub attributes a scheduled run to a repository user, usually whoever last changed the cron schedule. If that was a bot (for example a dependency-update bot), add it to allowed_bots.
  3. The secret is missing, or the input name doesn't match it. Add ANTHROPIC_API_KEY (a Claude Console API key) or CLAUDE_CODE_OAUTH_TOKEN (a subscription token from claude setup-token, available on Pro, Max, Ultra, Team and Enterprise) as a repository secret, or as an organization-level Actions secret. Then pass it to the matching input: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} or claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}. The stock claude.yml uses anthropic_api_key, so if you added an OAuth token instead, change that line. Never paste a key straight into the workflow file.
  4. The job is missing id-token: write. The default GitHub App authentication needs it, and so does workload identity federation (even when you pass your own github_token). The @claude example grants contents: write, pull-requests: write, issues: write, id-token: write and actions: read (so Claude can read CI results on PRs). A hand-written permissions: block that drops id-token: write breaks authentication.

The run succeeds but Claude posts nothing or can't do the job: 4 causes

  1. The workflow has a prompt, so it's in automation mode. With a prompt input, results go to the workflow run log by default, not to a comment. Open the run's log to read them, or tell Claude to post in the prompt and give it a tool that can. For the code review plugin, two lines matter: --comment in the prompt (without it Claude posts nothing and the review stays in the log) and claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'. Keep that claude_args line even though the skill's own allowed-tools names the same tool: the action only starts the inline-comment MCP server when --allowedTools in claude_args names it. Review workflows generated before v2.1.229 wrote reviews only to the run log; rerun /install-github-app and pick the update option, or add those two lines yourself.
  2. A plain-text prompt has no tools. In automation mode, a plain-text prompt gives Claude no shell or GitHub API access until you grant the tools it needs, with --allowedTools in claude_args or a permissions.allow rule in the settings input (a JSON string or a path to a settings file). The daily-report example allows mcp__github__list_commits and mcp__github__list_issues. A skill invocation is different: Claude can use the tools the skill's allowed-tools frontmatter grants. For how allow rules are written, see our permissions guide.
  3. The skill or plugin isn't found on the runner. For a skill in .claude/skills/, run actions/checkout before the anthropics/claude-code-action step so the files exist on the runner, then pass /skill-name as the prompt. For a skill inside a plugin, install it with the plugin_marketplaces and plugins inputs and call it as /plugin-name:skill-name. The plugins value is plugin-name@marketplace-name, and the marketplace name comes from the marketplace's own manifest, not its repository URL. Our plugin not installing guide covers marketplace names in more detail, and the skill not triggering guide covers skills that load but never run.
  4. The review skipped this pull request. Claude skips draft and closed pull requests, ones it judges not to need a review (automated or trivial ones), and ones that already have a comment from Claude. On public repositories, GitHub withholds secrets from runs triggered by fork pull requests, so the example review runs only on pull requests from branches in the same repository.

Schedules, CI and auth: 2 causes

  1. A scheduled workflow never runs. GitHub runs scheduled workflows only from the default branch, so a cron workflow sitting on a feature branch never fires. In public repositories GitHub also disables the schedule after 60 days without repository activity. And remember cause 8: if a bot last edited the cron line, the run is attributed to that bot and rejected unless it's in allowed_bots.
  2. CI doesn't run on Claude's commits, or authentication fails. GitHub doesn't trigger workflows on commits made with the default GITHUB_TOKEN. If your workflow passes github_token: ${{ secrets.GITHUB_TOKEN }}, remove it so the action authenticates as the Claude GitHub App, or pass a custom app token, and check that your CI triggers include the events Claude's pushes produce, such as push or pull_request. For authentication errors, test the same key or token locally with claude before debugging the workflow. A claude setup-token token lasts one year and is tied to the subscription of the person who generated it, so for a secret shared across an organization use a Console API key, or skip stored secrets entirely with workload identity federation (anthropic_federation_rule_id and anthropic_organization_id, plus id-token: write). On Amazon Bedrock, Google Cloud's Agent Platform or Microsoft Foundry (use_bedrock, use_vertex, use_foundry), follow the cloud provider page's troubleshooting section. Local sign-in problems are covered in our login not working guide and API errors in the API error guide.

Two upgrade traps

Runs that go on too long cost GitHub Actions minutes plus API tokens (or subscription usage with an OAuth token). Cap them with --max-turns in claude_args, workflow timeouts and GitHub's concurrency controls, and keep CLAUDE.md short, since Claude reads it on every run. If the rules in that file seem ignored, see CLAUDE.md or .claude/rules not working. Calling claude -p yourself in a workflow step or script instead of using the action? See Claude Code headless mode not working.


Facts on this page come from Anthropic's Claude Code docs on Claude Code GitHub Actions and authentication. This guide isn't affiliated with Anthropic.

Made by Solo Stack Kits. Once @claude answers, give it a safer setup to work with. Start with our free Claude Code safety hooks, or get the Claude Code Power Config Pack with permission presets and 8 tested safety hooks, $6 with the launch code while it lasts.

Want it set up already? Claude Code Power Config Pack

Fixed it? Skip the next one with a tested Claude Code setup you can drop into any repo.

One install command that backs up your settings first. Checked against the official Claude Code docs. MIT licensed.

Launch price: $6 instead of $12 (code LAUNCH50, first 25 buyers, until Nov 10, 2026).

Get the Config Pack: $6 launch priceOr try 2 of the hooks free

Free on Gumroad: block-dangerous-bash and protect-secrets with a settings snippet. Enter $0; Gumroad asks for an email to deliver the zip.

Prefer to build it yourself? Use the free Claude Code tools, no sign-up.