diff --git a/base-action/src/run-claude.ts b/base-action/src/run-claude.ts index 8caeeda..cfc4ecc 100644 --- a/base-action/src/run-claude.ts +++ b/base-action/src/run-claude.ts @@ -72,7 +72,7 @@ export function prepareRunConfig( // Build arguments in correct order: // 1. -p flag for prompt via pipe const claudeArgs = ["-p"]; - + // 2. User's custom arguments (can override defaults) if (options.claudeArgs && options.claudeArgs.trim() !== "") { const parsed = parseShellArgs(options.claudeArgs); @@ -81,7 +81,7 @@ export function prepareRunConfig( ); claudeArgs.push(...customArgs); } - + // 3. Legacy specific options for backward compatibility // These will eventually be removed in favor of claudeArgs if (options.allowedTools) { @@ -108,7 +108,7 @@ export function prepareRunConfig( if (options.model) { claudeArgs.push("--model", options.model); } - + // 4. Base args always at the end claudeArgs.push(...BASE_ARGS); diff --git a/claude-args-example.yml b/claude-args-example.yml index 9e9bc40..0dc9cf2 100644 --- a/claude-args-example.yml +++ b/claude-args-example.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: prompt: - description: 'Prompt for Claude' + description: "Prompt for Claude" required: true type: string @@ -13,14 +13,14 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - + - name: Run Claude with custom arguments uses: anthropics/claude-code-action@v1 with: mode: agent prompt: ${{ github.event.inputs.prompt }} anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} - + # New claudeArgs input allows direct CLI argument control # Arguments are passed in the order: -p [claudeArgs] [legacy options] [BASE_ARGS] claude_args: | @@ -28,4 +28,4 @@ jobs: --model claude-3-opus-20240229 --allowedTools Edit,Read,Write,Bash --disallowedTools WebSearch - --system-prompt "You are a senior engineer focused on code quality" \ No newline at end of file + --system-prompt "You are a senior engineer focused on code quality" diff --git a/src/create-prompt/index.ts b/src/create-prompt/index.ts index f140ff1..8f824f1 100644 --- a/src/create-prompt/index.ts +++ b/src/create-prompt/index.ts @@ -41,10 +41,10 @@ export function buildAllowedToolsString( ): string { // Tag mode needs these tools to function properly let baseTools = [...BASE_ALLOWED_TOOLS]; - + // Always include the comment update tool for tag mode baseTools.push("mcp__github_comment__update_claude_comment"); - + // Add commit signing tools if enabled if (useCommitSigning) { baseTools.push( @@ -63,7 +63,7 @@ export function buildAllowedToolsString( "Bash(git rm:*)", ); } - + // Add GitHub Actions MCP tools if enabled if (includeActionsTools) { baseTools.push( @@ -72,7 +72,7 @@ export function buildAllowedToolsString( "mcp__github_ci__download_job_log", ); } - + let allAllowedTools = baseTools.join(","); if (customAllowedTools && customAllowedTools.length > 0) { allAllowedTools = `${allAllowedTools},${customAllowedTools.join(",")}`; @@ -86,14 +86,14 @@ export function buildDisallowedToolsString( ): string { // Tag mode: Disable WebSearch and WebFetch by default for security let disallowedTools = ["WebSearch", "WebFetch"]; - + // If user has explicitly allowed some default disallowed tools, remove them if (allowedTools && allowedTools.length > 0) { disallowedTools = disallowedTools.filter( (tool) => !allowedTools.includes(tool), ); } - + let allDisallowedTools = disallowedTools.join(","); if (customDisallowedTools && customDisallowedTools.length > 0) { if (allDisallowedTools) { diff --git a/src/modes/agent/index.ts b/src/modes/agent/index.ts index 2e866df..fa25a4d 100644 --- a/src/modes/agent/index.ts +++ b/src/modes/agent/index.ts @@ -62,10 +62,16 @@ export const agentMode: Mode = { // No default tools are enforced - Claude Code's defaults will apply // Export user-specified tools only if provided if (context.inputs.allowedTools.length > 0) { - core.exportVariable("INPUT_ALLOWED_TOOLS", context.inputs.allowedTools.join(",")); + core.exportVariable( + "INPUT_ALLOWED_TOOLS", + context.inputs.allowedTools.join(","), + ); } if (context.inputs.disallowedTools.length > 0) { - core.exportVariable("INPUT_DISALLOWED_TOOLS", context.inputs.disallowedTools.join(",")); + core.exportVariable( + "INPUT_DISALLOWED_TOOLS", + context.inputs.disallowedTools.join(","), + ); } // Agent mode uses a minimal MCP configuration