diff --git a/.github/instructions/github-agentic-workflows.instructions.md b/.github/instructions/github-agentic-workflows.instructions.md index d07e3e5dcb0..1c21ee55448 100644 --- a/.github/instructions/github-agentic-workflows.instructions.md +++ b/.github/instructions/github-agentic-workflows.instructions.md @@ -73,11 +73,12 @@ The YAML frontmatter supports these fields: - **`features:`** - Feature flags for experimental features (object) - **`engine:`** - AI processor configuration - - String format: `"copilot"` (default), `"claude"`, `"codex"`, `"custom"` (⚠️ experimental) + - String format: `"copilot"` (default, recommended), `"custom"` (user-defined steps) + - ⚠️ **Experimental engines**: `"claude"` and `"codex"` are available but experimental - Object format for extended configuration: ```yaml engine: - id: copilot # Required: coding agent identifier (copilot, claude, codex, custom) + id: copilot # Required: coding agent identifier (copilot, custom, or experimental: claude, codex) version: beta # Optional: version of the action (has sensible default) model: gpt-5 # Optional: LLM model to use (has sensible default) max-turns: 5 # Optional: maximum chat iterations per run (has sensible default) @@ -953,9 +954,9 @@ gh aw logs gh aw logs weekly-research # Filter logs by AI engine type -gh aw logs --engine claude # Only Claude workflows -gh aw logs --engine codex # Only Codex workflows gh aw logs --engine copilot # Only Copilot workflows +gh aw logs --engine claude # Only Claude workflows (experimental) +gh aw logs --engine codex # Only Codex workflows (experimental) # Limit number of runs and filter by date (absolute dates) gh aw logs -c 10 --start-date 2024-01-01 --end-date 2024-01-31 @@ -1148,7 +1149,7 @@ The workflow frontmatter is validated against JSON Schema during compilation. Co - **Invalid field names** - Only fields in the schema are allowed - **Wrong field types** - e.g., `timeout-minutes` must be integer -- **Invalid enum values** - e.g., `engine` must be "copilot", "claude", "codex" or "custom" +- **Invalid enum values** - e.g., `engine` must be "copilot", "custom", or experimental: "claude", "codex" - **Missing required fields** - Some triggers require specific configuration Use `gh aw compile --verbose` to see detailed validation messages, or `gh aw compile --verbose` to validate a specific workflow. diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 97e13c3ef46..dbaf090514d 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -2233,7 +2233,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Agentic Workflow Audit Agent", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/blog-auditor.lock.yml b/.github/workflows/blog-auditor.lock.yml index fd9f9f1cad0..21441682e88 100644 --- a/.github/workflows/blog-auditor.lock.yml +++ b/.github/workflows/blog-auditor.lock.yml @@ -1546,7 +1546,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Blog Auditor", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index b1a9316f125..246c3d6188d 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -2705,7 +2705,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Claude Command Processor - /cloclo", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/commit-changes-analyzer.lock.yml b/.github/workflows/commit-changes-analyzer.lock.yml index bed72d92818..d82b29a8910 100644 --- a/.github/workflows/commit-changes-analyzer.lock.yml +++ b/.github/workflows/commit-changes-analyzer.lock.yml @@ -1513,7 +1513,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Commit Changes Analyzer", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index 5343ebc50a3..6de4e819bc9 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -1851,7 +1851,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Copilot Agent PR Analysis", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index 04fcecef15d..b9b5117dadf 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -2782,7 +2782,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Copilot Session Insights", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index 7816c90006d..a96f4549f9b 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -1845,7 +1845,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Daily Code Metrics and Trend Tracking Agent", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 167c6841c53..74b73e33f72 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -1416,7 +1416,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Daily Documentation Updater", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/daily-multi-device-docs-tester.lock.yml b/.github/workflows/daily-multi-device-docs-tester.lock.yml index 055f0561386..514a7acf49e 100644 --- a/.github/workflows/daily-multi-device-docs-tester.lock.yml +++ b/.github/workflows/daily-multi-device-docs-tester.lock.yml @@ -1325,7 +1325,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Multi-Device Docs Tester", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 61a0ed64b92..97f3b5a50dd 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -1966,7 +1966,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Developer Documentation Consolidator", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/example-workflow-analyzer.lock.yml b/.github/workflows/example-workflow-analyzer.lock.yml index 8289133f105..1481fad537f 100644 --- a/.github/workflows/example-workflow-analyzer.lock.yml +++ b/.github/workflows/example-workflow-analyzer.lock.yml @@ -1302,7 +1302,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Weekly Workflow Analysis", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index e9fc2656e67..9922ee95674 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -1794,7 +1794,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "GitHub MCP Remote Server Tools Report Generator", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index aaad4205152..670e1622c34 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -1531,7 +1531,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Go Logger Enhancement", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/go-pattern-detector.lock.yml b/.github/workflows/go-pattern-detector.lock.yml index fa33fbb51ee..8e645a519eb 100644 --- a/.github/workflows/go-pattern-detector.lock.yml +++ b/.github/workflows/go-pattern-detector.lock.yml @@ -1341,7 +1341,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Go Pattern Detector", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 0acc69a817f..8003108f928 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -1414,7 +1414,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Instructions Janitor", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index 9a778a36f8c..4fd058dc5eb 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -1639,7 +1639,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Lockfile Statistics Analysis Agent", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/prompt-clustering-analysis.lock.yml b/.github/workflows/prompt-clustering-analysis.lock.yml index ce9847442bf..80da8c04b09 100644 --- a/.github/workflows/prompt-clustering-analysis.lock.yml +++ b/.github/workflows/prompt-clustering-analysis.lock.yml @@ -1990,7 +1990,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Copilot Agent Prompt Clustering Analysis", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/safe-output-health.lock.yml b/.github/workflows/safe-output-health.lock.yml index 588bb2968b1..132dface1f9 100644 --- a/.github/workflows/safe-output-health.lock.yml +++ b/.github/workflows/safe-output-health.lock.yml @@ -1769,7 +1769,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Safe Output Health Monitor", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index e101e5939f2..a95428382ab 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -1653,7 +1653,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Schema Consistency Checker", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 4460b7d7426..a809eb569f3 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -2737,7 +2737,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Scout", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/security-fix-pr.lock.yml b/.github/workflows/security-fix-pr.lock.yml index f2dbafa6967..c174b1f41b5 100644 --- a/.github/workflows/security-fix-pr.lock.yml +++ b/.github/workflows/security-fix-pr.lock.yml @@ -1385,7 +1385,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Security Fix PR", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/semantic-function-refactor.lock.yml b/.github/workflows/semantic-function-refactor.lock.yml index 601133d83ad..a7ce0d7bed1 100644 --- a/.github/workflows/semantic-function-refactor.lock.yml +++ b/.github/workflows/semantic-function-refactor.lock.yml @@ -1725,7 +1725,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Semantic Function Refactoring", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 371146b1a84..07ec45ce634 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -1781,7 +1781,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Smoke Claude", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/smoke-detector.lock.yml b/.github/workflows/smoke-detector.lock.yml index c4da411ac9a..b27f236c5d6 100644 --- a/.github/workflows/smoke-detector.lock.yml +++ b/.github/workflows/smoke-detector.lock.yml @@ -2369,7 +2369,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Smoke Detector - Smoke Test Failure Investigator", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/static-analysis-report.lock.yml b/.github/workflows/static-analysis-report.lock.yml index e5f30033e9f..59611dbe560 100644 --- a/.github/workflows/static-analysis-report.lock.yml +++ b/.github/workflows/static-analysis-report.lock.yml @@ -1673,7 +1673,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Static Analysis Report", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/test-assign-milestone-allowed.lock.yml b/.github/workflows/test-assign-milestone-allowed.lock.yml index c6e09fb46ad..8fde15e9a7c 100644 --- a/.github/workflows/test-assign-milestone-allowed.lock.yml +++ b/.github/workflows/test-assign-milestone-allowed.lock.yml @@ -1182,7 +1182,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Test Assign Milestone with Allowed List", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/test-claude-assign-milestone.lock.yml b/.github/workflows/test-claude-assign-milestone.lock.yml index b9cacefe93c..ef54e495640 100644 --- a/.github/workflows/test-claude-assign-milestone.lock.yml +++ b/.github/workflows/test-claude-assign-milestone.lock.yml @@ -1176,7 +1176,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Test Claude Assign Milestone", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/test-claude-oauth-workflow.lock.yml b/.github/workflows/test-claude-oauth-workflow.lock.yml index ac7317be22d..1e0e125ef43 100644 --- a/.github/workflows/test-claude-oauth-workflow.lock.yml +++ b/.github/workflows/test-claude-oauth-workflow.lock.yml @@ -558,7 +558,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "test-claude-oauth", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/typist.lock.yml b/.github/workflows/typist.lock.yml index a4f02037da1..cbbd7e92414 100644 --- a/.github/workflows/typist.lock.yml +++ b/.github/workflows/typist.lock.yml @@ -1795,7 +1795,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Typist - Go Type Analysis", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index cc27bf20486..b08ba883f2a 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -2399,7 +2399,7 @@ jobs: version: "", agent_version: "2.0.44", workflow_name: "Documentation Unbloat", - experimental: false, + experimental: true, supports_tools_allowlist: true, supports_http_transport: true, run_id: context.runId, diff --git a/docs/src/content/docs/guides/mcps.md b/docs/src/content/docs/guides/mcps.md index 0efbb6ad200..e39f363402d 100644 --- a/docs/src/content/docs/guides/mcps.md +++ b/docs/src/content/docs/guides/mcps.md @@ -87,7 +87,7 @@ mcp-servers: - "serena" - "start-mcp-server" - "--context" - - "codex" + - "copilot" - "--project" - "${{ github.workspace }}" allowed: ["*"] diff --git a/docs/src/content/docs/reference/engines.md b/docs/src/content/docs/reference/engines.md index 5823934f327..fe00599e151 100644 --- a/docs/src/content/docs/reference/engines.md +++ b/docs/src/content/docs/reference/engines.md @@ -1,12 +1,16 @@ --- title: AI Engines -description: Complete guide to AI engines (coding agents) usable with GitHub Agentic Workflows, including Claude, Copilot, Codex, and custom engines with their specific configuration options. +description: Complete guide to AI engines (coding agents) usable with GitHub Agentic Workflows, including Copilot and custom engines with their specific configuration options. sidebar: order: 600 --- GitHub Agentic Workflows support multiple AI engines (coding agents) to interpret and execute natural language instructions. Each engine has unique capabilities and configuration options. +:::note[Experimental Engines] +Claude and Codex engines are available but marked as experimental. They are not documented here but can still be used by setting `engine: claude` or `engine: codex` in your workflow frontmatter. For production workflows, we recommend using the GitHub Copilot CLI engine. +::: + ### GitHub Copilot CLI GitHub Copilot is the default and recommended AI engine for most workflows. The [GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/use-copilot-cli) provides MCP server support and is designed for conversational AI workflows. @@ -195,7 +199,7 @@ All engines support custom error pattern recognition for enhanced log validation ```yaml wrap engine: - id: codex + id: copilot error_patterns: - pattern: "\\[(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2})\\]\\s+(ERROR):\\s+(.+)" level_group: 2 diff --git a/docs/src/content/docs/reference/frontmatter-full.md b/docs/src/content/docs/reference/frontmatter-full.md index 0ed6543467e..4bd17fb5919 100644 --- a/docs/src/content/docs/reference/frontmatter-full.md +++ b/docs/src/content/docs/reference/frontmatter-full.md @@ -892,30 +892,30 @@ post-steps: [] # (optional) # This field supports multiple formats (oneOf): -# Option 1: Simple engine name: 'claude' (default, Claude Code), 'copilot' (GitHub -# Copilot CLI), 'codex' (OpenAI Codex CLI), or 'custom' (user-defined steps) -engine: "claude" +# Option 1: Simple engine name: 'copilot' (GitHub Copilot CLI, recommended) or +# 'custom' (user-defined steps). Note: 'claude' and 'codex' are available but +# experimental. +engine: "copilot" # Option 2: Extended engine configuration object with advanced options for model # selection, turn limiting, environment variables, and custom steps engine: - # AI engine identifier: 'claude' (Claude Code), 'codex' (OpenAI Codex CLI), - # 'copilot' (GitHub Copilot CLI), or 'custom' (user-defined GitHub Actions steps) - id: "claude" + # AI engine identifier: 'copilot' (GitHub Copilot CLI), or 'custom' (user-defined + # GitHub Actions steps). Note: 'claude' and 'codex' are available but experimental. + id: "copilot" # Optional version of the AI engine action (e.g., 'beta', 'stable'). Has sensible # defaults and can typically be omitted. # (optional) version: "example-value" - # Optional specific LLM model to use (e.g., 'claude-3-5-sonnet-20241022', - # 'gpt-4'). Has sensible defaults and can typically be omitted. + # Optional specific LLM model to use (e.g., 'gpt-5', 'claude-sonnet-4'). Has + # sensible defaults and can typically be omitted. # (optional) model: "example-value" # Maximum number of chat iterations per run. Helps prevent runaway loops and - # control costs. Has sensible defaults and can typically be omitted. Note: Only - # supported by the claude engine. + # control costs. Has sensible defaults and can typically be omitted. # (optional) max-turns: 1 @@ -942,10 +942,6 @@ engine: # (optional) cancel-in-progress: true - # Custom user agent string for GitHub MCP server configuration (codex engine only) - # (optional) - user-agent: "example-value" - # Custom environment variables to pass to the AI engine, including secret # overrides (e.g., OPENAI_API_KEY: ${{ secrets.CUSTOM_KEY }}) # (optional) @@ -983,11 +979,6 @@ engine: # (optional) description: "Description of the workflow" - # Additional TOML configuration text that will be appended to the generated - # config.toml in the action (codex engine only) - # (optional) - config: "example-value" - # Optional array of command-line arguments to pass to the AI engine CLI. These # arguments are injected after all other args but before the prompt. # (optional) diff --git a/docs/src/content/docs/troubleshooting/errors.md b/docs/src/content/docs/troubleshooting/errors.md index 0890234a7b4..b9a72f19911 100644 --- a/docs/src/content/docs/troubleshooting/errors.md +++ b/docs/src/content/docs/troubleshooting/errors.md @@ -1043,12 +1043,12 @@ safe-outputs: **Error Message:** ``` -strict mode: engine 'claude' does not support firewall +strict mode: engine does not support firewall ``` **Cause:** The workflow specifies network restrictions but uses an engine that doesn't support network firewalling, and strict mode is enabled. -**Solution:** Either use an engine with firewall support or remove network restrictions: +**Solution:** Use an engine with firewall support or remove network restrictions: ```yaml wrap # Option 1: Use engine with firewall support diff --git a/pkg/cli/templates/github-agentic-workflows.instructions.md b/pkg/cli/templates/github-agentic-workflows.instructions.md index d07e3e5dcb0..1c21ee55448 100644 --- a/pkg/cli/templates/github-agentic-workflows.instructions.md +++ b/pkg/cli/templates/github-agentic-workflows.instructions.md @@ -73,11 +73,12 @@ The YAML frontmatter supports these fields: - **`features:`** - Feature flags for experimental features (object) - **`engine:`** - AI processor configuration - - String format: `"copilot"` (default), `"claude"`, `"codex"`, `"custom"` (⚠️ experimental) + - String format: `"copilot"` (default, recommended), `"custom"` (user-defined steps) + - ⚠️ **Experimental engines**: `"claude"` and `"codex"` are available but experimental - Object format for extended configuration: ```yaml engine: - id: copilot # Required: coding agent identifier (copilot, claude, codex, custom) + id: copilot # Required: coding agent identifier (copilot, custom, or experimental: claude, codex) version: beta # Optional: version of the action (has sensible default) model: gpt-5 # Optional: LLM model to use (has sensible default) max-turns: 5 # Optional: maximum chat iterations per run (has sensible default) @@ -953,9 +954,9 @@ gh aw logs gh aw logs weekly-research # Filter logs by AI engine type -gh aw logs --engine claude # Only Claude workflows -gh aw logs --engine codex # Only Codex workflows gh aw logs --engine copilot # Only Copilot workflows +gh aw logs --engine claude # Only Claude workflows (experimental) +gh aw logs --engine codex # Only Codex workflows (experimental) # Limit number of runs and filter by date (absolute dates) gh aw logs -c 10 --start-date 2024-01-01 --end-date 2024-01-31 @@ -1148,7 +1149,7 @@ The workflow frontmatter is validated against JSON Schema during compilation. Co - **Invalid field names** - Only fields in the schema are allowed - **Wrong field types** - e.g., `timeout-minutes` must be integer -- **Invalid enum values** - e.g., `engine` must be "copilot", "claude", "codex" or "custom" +- **Invalid enum values** - e.g., `engine` must be "copilot", "custom", or experimental: "claude", "codex" - **Missing required fields** - Some triggers require specific configuration Use `gh aw compile --verbose` to see detailed validation messages, or `gh aw compile --verbose` to validate a specific workflow. diff --git a/pkg/workflow/claude_engine.go b/pkg/workflow/claude_engine.go index e18f0b3a42b..69e2d940de0 100644 --- a/pkg/workflow/claude_engine.go +++ b/pkg/workflow/claude_engine.go @@ -21,7 +21,7 @@ func NewClaudeEngine() *ClaudeEngine { id: "claude", displayName: "Claude Code", description: "Uses Claude Code with full MCP tool support and allow-listing", - experimental: false, + experimental: true, supportsToolsAllowlist: true, supportsHTTPTransport: true, // Claude supports both stdio and HTTP transport supportsMaxTurns: true, // Claude supports max-turns feature diff --git a/pkg/workflow/claude_engine_test.go b/pkg/workflow/claude_engine_test.go index 88768385195..25053b423eb 100644 --- a/pkg/workflow/claude_engine_test.go +++ b/pkg/workflow/claude_engine_test.go @@ -24,8 +24,8 @@ func TestClaudeEngine(t *testing.T) { t.Errorf("Expected description 'Uses Claude Code with full MCP tool support and allow-listing', got '%s'", engine.GetDescription()) } - if engine.IsExperimental() { - t.Error("Claude engine should not be experimental") + if !engine.IsExperimental() { + t.Error("Claude engine should be experimental") } if !engine.SupportsToolsAllowlist() {