Run AI inference in workflows using the GitHub Copilot CLI.
The action is Copilot-only. The provider input defaults to copilot, and copilot is the only supported value.
Because the Copilot CLI is not pre-installed on GitHub-hosted runners, install and authenticate it before invoking this action.
name: AI inference
on: workflow_dispatch
jobs:
inference:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
- name: Install Copilot CLI
run: npm install -g @github/copilot
- name: Run AI Inference via Copilot
id: inference
uses: actions/ai-inference@v1
with:
prompt: Summarize the latest changes in this repository.
model: gpt-4.1
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_PAT }}
- name: Print output
run: echo "${{ steps.inference.outputs.response }}"You can provide prompt content inline or from files.
steps:
- name: Run AI Inference with Text File
id: inference
uses: actions/ai-inference@v1
with:
prompt-file: ./.github/prompts/prompt.txtsteps:
- name: Run AI Inference with Prompt YAML
id: inference
uses: actions/ai-inference@v1
with:
prompt-file: ./.github/prompts/sample.prompt.yml
input: |
repo: actions/ai-inference
file_input: |
diff: ./artifacts/diff.txtExample:
messages:
- role: system
content: Be concise and concrete.
- role: user
content: Summarize changes for {{repo}} using this diff:\n{{diff}}
model: gpt-4.1steps:
- name: Run AI Inference with System Prompt File
id: inference
uses: actions/ai-inference@v1
with:
prompt: Hello
system-prompt-file: ./.github/prompts/system.txtThe action writes the model response to a temporary file and exposes the path via response-file.
steps:
- name: Run AI Inference
id: inference
uses: actions/ai-inference@v1
with:
prompt: Hello
- name: Use Response File
run: |
echo "Response saved to: ${{ steps.inference.outputs.response-file }}"
cat "${{ steps.inference.outputs.response-file }}"Inputs are defined in action.yml.
| Name | Description | Default |
|---|---|---|
prompt |
Inline user prompt. | "" |
prompt-file |
Path to prompt file (.txt or .prompt.yml). When both are set, this takes precedence over prompt. |
"" |
input |
YAML template variables for .prompt.yml files. |
"" |
file_input |
YAML map of template variable names to file paths; file contents are injected into templates. | "" |
model |
Model to pass to Copilot CLI (for example gpt-4.1, claude-sonnet-4.5). Set empty to let CLI choose its default. |
gpt-4.1 |
system-prompt |
Inline system prompt. | You are a helpful assistant |
system-prompt-file |
Path to system prompt file. When both are set, this takes precedence over system-prompt. |
"" |
token |
Token value masked by the action. Defaults to github.token. |
github.token |
provider |
Inference provider. Only copilot is supported. |
copilot |
copilot-cli-path |
Path to Copilot CLI binary. If empty, uses copilot on PATH. |
"" |
copilot-allow-tools |
Comma-separated list of --allow-tool values passed to Copilot CLI. |
"" |
| Name | Description |
|---|---|
response |
Model response text. |
response-file |
Path to temp file containing the response text. |
- The action invokes Copilot CLI with
-p <prompt> -s --no-ask-user. - No
--allow-toolflags are passed unless you setcopilot-allow-tools. - Ensure Copilot CLI authentication is configured on the runner, typically via
COPILOT_GITHUB_TOKEN.
This project includes a helper script, script/release, to streamline tagging and pushing new releases for GitHub Actions. For more information, see Versioning in the GitHub Actions toolkit.