anthropics / anthropics/claude-code-action

trigger_phrase regex rejects valid mentions preceded by non-whitespace chars like ( or "

Abierto
#941 0 comentarios 0 reacciones 0 asignados Ver en GitHub
bug p2
Lenguaje dominante
TypeScript
Estrellas
8.9k
Forks
2.1k
Merge medio
3 d 9 h
PR fusionados (30 d)
10

Descripción

## 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)

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.