Add support for kebab-case --allowed-tools flag (#581)

- Update parseAllowedTools to accept both --allowedTools and --allowed-tools
- Add regex alternation to support both camelCase and kebab-case variants
- Add test cases for unquoted and quoted kebab-case formats
- All existing tests continue to pass

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Leonardo Yvens
2025-09-22 18:18:04 +02:00
committed by GitHub
parent 93028b410e
commit 93f8ab56c2
2 changed files with 20 additions and 4 deletions

View File

@@ -1,10 +1,10 @@
export function parseAllowedTools(claudeArgs: string): string[] { export function parseAllowedTools(claudeArgs: string): string[] {
// Match --allowedTools followed by the value // Match --allowedTools or --allowed-tools followed by the value
// Handle both quoted and unquoted values // Handle both quoted and unquoted values
const patterns = [ const patterns = [
/--allowedTools\s+"([^"]+)"/, // Double quoted /--(?:allowedTools|allowed-tools)\s+"([^"]+)"/, // Double quoted
/--allowedTools\s+'([^']+)'/, // Single quoted /--(?:allowedTools|allowed-tools)\s+'([^']+)'/, // Single quoted
/--allowedTools\s+([^\s]+)/, // Unquoted /--(?:allowedTools|allowed-tools)\s+([^\s]+)/, // Unquoted
]; ];
for (const pattern of patterns) { for (const pattern of patterns) {

View File

@@ -68,4 +68,20 @@ describe("parseAllowedTools", () => {
"mcp__github_comment__update", "mcp__github_comment__update",
]); ]);
}); });
test("parses kebab-case --allowed-tools", () => {
const args = "--allowed-tools mcp__github__*,mcp__github_comment__*";
expect(parseAllowedTools(args)).toEqual([
"mcp__github__*",
"mcp__github_comment__*",
]);
});
test("parses quoted kebab-case --allowed-tools", () => {
const args = '--allowed-tools "mcp__github__*,mcp__github_comment__*"';
expect(parseAllowedTools(args)).toEqual([
"mcp__github__*",
"mcp__github_comment__*",
]);
});
}); });