anthropics / anthropics/claude-code-action
trigger_phrase regex rejects valid mentions preceded by non-whitespace chars like ( or "
- Langage dominant
- TypeScript
- Étoiles
- 8.9k
- Forks
- 2.1k
- Merge moyen
- 3 j 9 h
- PR mergées (30 j)
- 10
Description
## Bug
The trigger phrase regex in `src/github/validation/trigger.ts` requires the trigger phrase to be preceded by either start-of-string or whitespace:
```typescript
const regex = new RegExp(
`(^|\\s)${escapeRegExp(triggerPhrase)}([\\s.,!?;:]|$)`,
);
```
The leading boundary `(^|\\s)` is too restrictive. Common patterns where users naturally write the trigger phrase after non-whitespace characters silently fail to trigger.
## Reproduction
With default `trigger_phrase: "@claude"`:
| Comment | Triggers? | Expected? |
|---------|-----------|-----------|
| `@claude help` | yes | yes |
| `hey @claude help` | yes | yes |
| `(@claude) can you check?` | **no** | yes |
| `"@claude can you check?"` | **no** | yes |
| `>@claude can you check?` | **no** | yes |
| `cc:@claude` | **no** | yes |
The workflow `if` condition (GitHub's `contains()`) is case-insensitive and passes all these cases, so the workflow *runs*. But the action's internal trigger check rejects them silently, logging "No trigger found, skipping remaining steps" with exit code 0.
## Environment
- `anthropics/claude-code-action@v1` (latest as of Feb 13, 2026)
- `claude_code_oauth_token` auth
- Tested on both `issue_comment` and `pull_request` event triggers
## Actual logs
```
No trigger was met for @claude
Trigger result: false
No trigger found, skipping remaining steps
```
## Suggested fix
Replace `(^|\\s)` with a negative lookbehind for word characters (to still prevent matching inside email addresses like `user@claude.com`):
```typescript
const regex = new RegExp(
`(?<=^|[^a-zA-Z0-9_])${escapeRegExp(triggerPhrase)}([\\s.,!?;:]|$)`,
"i", // also fix #910 while we're here
);
```
Or more conservatively, expand the leading boundary to include common punctuation:
```typescript
const regex = new RegExp(
`(^|[\\s(>"'/])${escapeRegExp(triggerPhrase)}([\\s.,!?;:)"']|$)`,
"i",
);
```
## Related
- #910 (case sensitivity, different issue but same regex)
- #923 (Unicode trailing boundary, closed as dup of #910)
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.