GitHub Copilot
Run GitHub Copilot CLI with copilot -p in scripts and CI (2026)
How do I run GitHub Copilot CLI non-interactively with copilot -p in shell scripts and GitHub Actions?
Pass a prompt with -p or --prompt and Copilot CLI runs it and exits. Add -s to print only the response, --no-ask-user so it never stops for input, and --allow-tool to grant only the tools the task needs. In CI, set COPILOT_GITHUB_TOKEN to a fine-grained personal access token with the Copilot Requests permission, or in an organization-owned repository use the built-in GITHUB_TOKEN with the copilot-requests: write permission.
Compare: headless mode for scripts and CI in every AI coding agent →
GitHub Copilot settings change often
Get one email a week when a setting, flag or permission rule changes, checked against the vendor docs.
Run a single prompt
Use -p or --prompt to run a prompt in non-interactive mode. The CLI runs the prompt and exits when done. You can also pipe a prompt in. Piped input is ignored if you also pass -p.
Prompt flag or pipe
copilot -p 'Explain this file: ./complex.ts' echo 'Explain this file: ./complex.ts' | copilot
GitHub suggests single quotes around prompts so the shell does not interpret special characters, and setting --model explicitly for consistent behavior across environments.
Clean output and no questions
- -s (--silent): suppresses stats and decoration so only the agent's response is printed. Use it when piping or capturing output.
- --no-ask-user: stops the agent from pausing to ask clarifying questions.
- --model=MODEL: picks the model. COPILOT_MODEL also works, but a custom agent's model and the --model flag take precedence.
- --secret-env-vars=VAR: redacts that variable's value in output. GITHUB_TOKEN and COPILOT_GITHUB_TOKEN are redacted by default.
Capture the answer in a variable
result=$(copilot -p 'What version of Node.js does this project require? Give the number only. No other text.' -s)
The programmatic reference does not document a JSON output format or exit codes for copilot -p. It points to copilot help for the full option list.
Grant only the tools the task needs
- --allow-tool: grant specific tools. For several, use a quoted, comma-separated list.
- --deny-tool: block specific tools, useful in a locked-down workflow.
- --allow-all-tools: let every tool run without per-tool approval.
- --allow-all or --yolo: equals --allow-all-tools --allow-all-paths --allow-all-urls.
- Tool kinds: shell, write, read, url, memory, and MCP server names. Narrow them with filters such as shell(git:*), write(README.md), url(github.com) or github(create_issue).
Commit message with git access only
copilot -p 'Write a commit message in plain text for the staged changes' -s \ --allow-tool='shell(git:*)'
GitHub advises against overly permissive options such as --allow-all unless you are in a sandbox environment.
Save the session transcript
- --share=PATH: exports the transcript to a Markdown file after a non-interactive run. The default is ./copilot-session-<ID>.md.
- --share-gist: publishes the transcript as a secret GitHub gist. Gists are not available to Enterprise Managed Users or to GitHub Enterprise Cloud with data residency.
- Transcripts can contain sensitive information, so check before sharing.
Keep an audit report
copilot -p '/review' -s --allow-tool='shell(git:*)' --share='./audit-report.md'
Authenticate in CI
Copilot CLI reads COPILOT_GITHUB_TOKEN first, then GH_TOKEN, then GITHUB_TOKEN. Supported tokens include fine-grained personal access tokens with the Copilot Requests permission. Classic personal access tokens (ghp_) are not supported.
- Create a fine-grained token with the Copilot Requests permission and save it as a repository secret.
- Set COPILOT_GITHUB_TOKEN from that secret so Copilot CLI uses it instead of the built-in GITHUB_TOKEN.
- For organization-owned repositories GitHub recommends the built-in GITHUB_TOKEN, so no PAT or stored secret is needed. Grant the workflow copilot-requests: write, pass GITHUB_TOKEN: ${{ github.token }} to the step, and make sure the organization's Copilot CLI policy allows use of Copilot CLI billed to the organization.
- Use a PAT instead when the organization has not enabled that policy or you want usage billed to a specific user's Copilot seat.
GitHub Actions example
This is GitHub's documented daily summary workflow. It installs the CLI from npm, runs one prompt with git and write access, and appends the result to the job summary.
.github/workflows/daily-summary.yml
name: Daily summary
on:
workflow_dispatch:
schedule:
- cron: '30 17 * * *'
permissions:
contents: read
jobs:
daily-summary:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Node.js environment
uses: actions/setup-node@v7
- name: Install Copilot CLI
run: npm install -g @github/copilot
- name: Run Copilot CLI
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
run: |
copilot -p "Review the git log for this repository and write a bullet point summary of all code changes that were made today, with links to the relevant commit on GitHub. Above the bullet list give a description (max 100 words) summarizing the changes made. Write the details to summary.md" --allow-tool='shell(git:*)' --allow-tool=write --no-ask-user
cat summary.md >> "$GITHUB_STEP_SUMMARY"GitHub also recommends GitHub Agentic Workflows for most automation, since they default to GITHUB_TOKEN and add guardrails.
Related guides
Get GitHub Copilot settings changes by email
When a setting, flag or permission rule in this guide changes, it goes in the weekly AgentAtlas update, checked against the vendor docs. One email a week.
Sources
More on GitHub Copilot
More GitHub Copilot guides
- GitHub Copilot custom instructions
- Adding MCP servers to GitHub Copilot
- copilot-setup-steps.yml: set up the GitHub Copilot cloud (coding) agent environment
- GitHub Copilot CLI permissions: --allow-tool, --deny-tool, --allow-all-tools and trusted directories
- GitHub Copilot custom agents: .github/agents/*.agent.md profiles, tools and frontmatter
- GitHub Copilot code review settings: automatic PR reviews, rulesets, effort level and approvals
- GitHub Copilot hooks: .github/hooks/*.json for Copilot CLI and the cloud agent
Other guides
Reviewed Oct 19, 2026. Settings change often; the linked vendor docs are the source of truth.