anthropics / anthropics/claude-code-action
Native installer reports '✔ successfully installed' while emitting '⚠ claude command not found' warnings (v1.0.106 regression)
- Dominant language
- TypeScript
- Stars
- 8.9k
- Forks
- 2.1k
- Avg merge
- 3d 9h
- Merged PRs (30d)
- 10
Description
## TL;DR
The native install path in v1.0.106 reported `✔ Claude Code successfully installed!` and `✅ Installation complete!` while simultaneously emitting `⚠ Setup notes: claude command not found at /home/runner/.local/bin/claude` — and the next step (`Adding marketplace`) immediately ENOENT'd trying to invoke that same binary.
The regression has effectively been resolved by [v1.0.107](https://github.com/anthropics/claude-code-action/releases/tag/v1.0.107) (revert from Claude Code 2.1.120 → 2.1.119) and the floating `v1` tag was repointed at 2026-04-25T01:56:29Z. So this report is **post-mortem hardening only**, not a request for an immediate fix to the installed-version regression.
## Why this is still worth filing
The install-validation self-check detected the failure correctly (`directory /home/runner/.local/bin does not exist`, `claude command not found at /home/runner/.local/bin/claude`) but the wrapper logic still treated install as successful. That's a silent-success-mode bug independent of any specific Claude Code version: any future installer regression that produces the same warning state will fail the next step rather than failing the install step itself, costing every consumer ~30 minutes of triage instead of a clear error message.
Suggested hardening: when the post-install self-check finds the binary is missing from the declared `Location` path, fail the install step (exit non-zero) rather than emitting a warning and continuing.
## Repro
Action: `anthropics/claude-code-action@v1` (resolved to v1.0.106 SHA `909faa9908ebafed071f8b2d617a3346071babde`)
Runner: `ubuntu-latest`
Trigger: `pull_request` event on a Claude Code Review workflow
Window: between v1.0.106 release (2026-04-25T00:16:01Z) and v1.0.107 release (2026-04-25T01:56:23Z) — ~1h40min
## Log excerpt (from a real run during the window)
```
##[group]Run anthropics/claude-code-action@v1
...
✔ Claude Code successfully installed!
Version: 2.1.120
Location: ~/.local/bin/claude
⚠ Setup notes:
● installMethod is native, but directory /home/runner/.local/bin does not exist
● installMethod is native, but claude command not found at /home/runner/.local/bin/claude
✅ Installation complete!
Claude Code installed successfully
...
Adding 1 marketplace(s)...
Adding marketplace: https://github.com/anthropics/claude-code.git
##[error]Action failed with error: Failed to add marketplace 'https://github.com/anthropics/claude-code.git': ENOENT: no such file or directory, posix_spawn '/home/runner/.local/bin/claude'
##[error]Process completed with exit code 1.
```
The two warnings under "Setup notes" already correctly flag the failure mode. The next step's `posix_spawn` then crashes on the same path, costing the run.
## Related
- The `Internal error: directory mismatch for ".../tsconfig.json", fd 4` line that always shows in this action's output is tracked in #1205 — that's a separate, longer-standing issue and not load-bearing for this report.
## Environment
| Field | Value |
|---|---|
| Action version | `v1` (resolved to v1.0.106 / SHA `909faa9908ebafed071f8b2d617a3346071babde`) |
| Claude Code version | 2.1.120 |
| Runner | `ubuntu-latest` |
| Window of impact | 2026-04-25T00:16:01Z → 2026-04-25T01:56:29Z (~1h40min) |
## Workaround during the window
For consumers who hit this and need to merge despite the failed `claude-review` check: re-run will not help (same install path is hit), but pinning the action to a known-good SHA (anything `< v1.0.106`) un-blocks. Or wait for `v1` to be repointed (which the maintainers did within ~1h40min — thank you for the fast turnaround).
Contributor guide
Research direction
No source file or test is named. Start by locating the native install path's post-install self-check and the handling that prints “Installation complete,” then trace the marketplace invocation that uses the declared binary path. Done means a missing binary makes installation exit non-zero before marketplace setup, with coverage for the failure state.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, typescript
- Domain
- ci-cd, devops
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100