Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion docs/src/content/docs/reference/engines.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: AI Engines (aka Coding Agents)
description: Complete guide to AI engines (coding agents) usable with GitHub Agentic Workflows, including Copilot, Claude, and Codex with their specific configuration options.
description: Complete guide to AI engines (coding agents) usable with GitHub Agentic Workflows, including Copilot, Claude, Codex, and Gemini with their specific configuration options.
sidebar:
order: 600
---
Expand All @@ -12,6 +12,7 @@ GitHub Agentic Workflows use [AI Engines](/gh-aw/reference/glossary/#engine) (no
- [**Copilot CLI**](#using-copilot-cli)
- [**Claude by Anthropic (Claude Code)**](#using-claude-by-anthropic-claude-code)
- [**OpenAI Codex**](#using-openai-codex)
- [**Google Gemini CLI**](#using-google-gemini-cli)

## Using Copilot CLI

Expand Down Expand Up @@ -77,6 +78,24 @@ To use [OpenAI Codex](https://openai.com/blog/openai-codex):
gh aw secrets set OPENAI_API_KEY --value "<your-openai-api-key>"
```

## Using Google Gemini CLI

To use [Google Gemini CLI](https://github.com/google-gemini/gemini-cli):

1. Request the use of the Gemini engine in your workflow frontmatter:

```yaml wrap
engine: gemini
```

2. Configure `GEMINI_API_KEY` GitHub Actions secret.

[Create a Gemini API key](https://aistudio.google.com/apikey) and add it to your repository:

```bash wrap
gh aw secrets set GEMINI_API_KEY --value "<your-gemini-api-key>"
```

## Extended Coding Agent Configuration

Workflows can specify extended configuration for the coding agent:
Expand Down
5 changes: 2 additions & 3 deletions docs/src/content/docs/reference/frontmatter-full.md
Original file line number Diff line number Diff line change
Expand Up @@ -1252,15 +1252,14 @@ post-steps: []
# This field supports multiple formats (oneOf):

# Option 1: Simple engine name: 'claude' (default, Claude Code), 'copilot' (GitHub
# Copilot CLI), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI -
# experimental)
# Copilot CLI), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI)
engine: "claude"
Comment on lines 1254 to 1256
Copy link

Copilot AI Feb 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These generated frontmatter comments say the engine defaults to copilot (line 1250) but then describe Option 1 as 'claude' (default, Claude Code) which contradicts both the docs and actual default behavior. Please update the Option 1 description to mark copilot as the default engine (and consider aligning the example engine: "claude" if it’s intended to demonstrate the default).

See below for a potential fix:

# Option 1: Simple engine name: 'copilot' (default, GitHub Copilot CLI), 'claude'
# (Claude Code), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI)
engine: "copilot"

Copilot uses AI. Check for mistakes.

# 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 'gemini' (Google Gemini CLI - experimental)
# 'copilot' (GitHub Copilot CLI), or 'gemini' (Google Gemini CLI)
id: "claude"

# Optional version of the AI engine action (e.g., 'beta', 'stable', 20). Has
Expand Down
4 changes: 2 additions & 2 deletions pkg/parser/schemas/main_workflow_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -6899,7 +6899,7 @@
{
"type": "string",
"enum": ["claude", "codex", "copilot", "gemini"],
"description": "Simple engine name: 'claude' (default, Claude Code), 'copilot' (GitHub Copilot CLI), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI - experimental)"
"description": "Simple engine name: 'claude' (default, Claude Code), 'copilot' (GitHub Copilot CLI), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI)"
Copy link

Copilot AI Feb 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The engine schema description claims 'claude' is the default ('claude' (default, Claude Code)), but the schema itself sets engine.default to copilot (see same file around properties.engine.default: "copilot") and the compiler defaults to Copilot via EngineRegistry.GetDefaultEngine() (pkg/workflow/agentic_engine.go:394-397). Please update this description to reflect the actual default engine (copilot).

Suggested change
"description": "Simple engine name: 'claude' (default, Claude Code), 'copilot' (GitHub Copilot CLI), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI)"
"description": "Simple engine name: 'claude' (Claude Code), 'copilot' (default, GitHub Copilot CLI), 'codex' (OpenAI Codex CLI), or 'gemini' (Google Gemini CLI)"

Copilot uses AI. Check for mistakes.
},
{
"type": "object",
Expand All @@ -6908,7 +6908,7 @@
"id": {
"type": "string",
"enum": ["claude", "codex", "copilot", "gemini"],
"description": "AI engine identifier: 'claude' (Claude Code), 'codex' (OpenAI Codex CLI), 'copilot' (GitHub Copilot CLI), or 'gemini' (Google Gemini CLI - experimental)"
"description": "AI engine identifier: 'claude' (Claude Code), 'codex' (OpenAI Codex CLI), 'copilot' (GitHub Copilot CLI), or 'gemini' (Google Gemini CLI)"
},
"version": {
"type": ["string", "number"],
Expand Down
2 changes: 1 addition & 1 deletion pkg/workflow/gemini_engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func NewGeminiEngine() *GeminiEngine {
id: "gemini",
displayName: "Google Gemini CLI",
description: "Google Gemini CLI with headless mode and LLM gateway support",
experimental: true, // Marked as experimental as requested
experimental: false,
supportsToolsAllowlist: true,
supportsMaxTurns: false,
supportsWebFetch: false,
Expand Down
2 changes: 1 addition & 1 deletion pkg/workflow/gemini_engine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func TestGeminiEngine(t *testing.T) {
assert.Equal(t, "gemini", engine.GetID(), "Engine ID should be 'gemini'")
assert.Equal(t, "Google Gemini CLI", engine.GetDisplayName(), "Display name should be 'Google Gemini CLI'")
assert.NotEmpty(t, engine.GetDescription(), "Description should not be empty")
assert.True(t, engine.IsExperimental(), "Gemini engine should be experimental")
assert.False(t, engine.IsExperimental(), "Gemini engine should not be experimental")
})

t.Run("capabilities", func(t *testing.T) {
Expand Down