anthropics / anthropics/claude-code-action

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

オープン
#941 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug p2
主要言語
TypeScript
スター
8.9k
フォーク
2.1k
平均マージ
3日 9時間
マージ済み PR(30日)
10

説明

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

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。