mirror of
https://github.com/anthropics/claude-code-action.git
synced 2026-08-03 01:38:30 +08:00
parseAllowedTools (used to decide which GitHub MCP servers to install) hand-rolled a regex parse of claude_args, while the tools actually granted to Claude are parsed by parseClaudeArgsToExtraArgs in base-action/src/parse-sdk-options.ts using shell-quote. The two parsers diverged on two inputs (#1357): - Multiple values after a single flag: for `--allowedTools "Read" "Grep" "mcp__github__get_commit"` the regex captured only "Read", so the github MCP server was not installed even though mcp__github__get_commit was granted — tool calls then failed. - Commented-out lines: the regex counted tools on `#`-prefixed lines that the SDK parser strips, installing servers that were never used. Reimplement parseAllowedTools on the same shell-quote tokenizer and the same "accumulating flag consumes all consecutive non-flag values" semantics, stripping comment lines first, so the install decision agrees with the tools that are actually granted. Unquoted glob patterns (e.g. `mcp__github__*`), which shell-quote yields as glob objects, are recovered to their literal text to preserve existing behavior. Closes #1357 Co-authored-by: bymle <229636660+bymle@users.noreply.github.com>