Summary
Add a --prompt-file <path> flag to read the prompt from a file instead of from -p <text> or stdin.
Motivation
Today there are two ways to give Copilot CLI a prompt in non-interactive mode:
-p "$(cat prompt.md)" — convenient, but the whole prompt is passed on the command line, which is subject to ARG_MAX (~2 MB on typical Linux). For our use case (code-review bot that inlines the PR diff plus prior reviews) this is close enough to the limit to be a concern.
< prompt.md (stdin) — works, no size limit, but is awkward to thread through wrapper scripts that already use stdin for other purposes, and it's harder for new users to discover.
A first-class --prompt-file flag would:
- Have no size limit (just reads the file).
- Be self-documenting in scripts (
copilot --prompt-file ./review-prompt.md vs copilot -p "$(cat review-prompt.md)").
- Compose naturally with workflows that build prompts incrementally (instructions + diff + prior reviews) into a single file.
Suggested behaviour
copilot --model gpt-5.5 --prompt-file ./prompt.md # equivalent to `-p "$(cat ./prompt.md)"` but unbounded
copilot --model gpt-5.5 --prompt-file - # explicit stdin (same as today's bare `<`)
Mutually exclusive with -p/--prompt. Error if the file doesn't exist or is empty.
Why now
I just shipped a self-hosted GitHub Actions workflow that calls Copilot CLI three times per PR (two reviewers + synthesiser), each with a prompt that inlines the PR diff, repo instructions, and (for the synthesiser) the two prior reviews. The consensus prompt can approach several hundred KB; we use stdin today, which works but isn't obvious to anyone reading the workflow. --prompt-file would make the intent clear without a wrapper.
Environment
- GitHub Copilot CLI:
1.0.49
- Use case: non-interactive
-p/stdin in GitHub Actions
Summary
Add a
--prompt-file <path>flag to read the prompt from a file instead of from-p <text>or stdin.Motivation
Today there are two ways to give Copilot CLI a prompt in non-interactive mode:
-p "$(cat prompt.md)"— convenient, but the whole prompt is passed on the command line, which is subject toARG_MAX(~2 MB on typical Linux). For our use case (code-review bot that inlines the PR diff plus prior reviews) this is close enough to the limit to be a concern.< prompt.md(stdin) — works, no size limit, but is awkward to thread through wrapper scripts that already use stdin for other purposes, and it's harder for new users to discover.A first-class
--prompt-fileflag would:copilot --prompt-file ./review-prompt.mdvscopilot -p "$(cat review-prompt.md)").Suggested behaviour
Mutually exclusive with
-p/--prompt. Error if the file doesn't exist or is empty.Why now
I just shipped a self-hosted GitHub Actions workflow that calls Copilot CLI three times per PR (two reviewers + synthesiser), each with a prompt that inlines the PR diff, repo instructions, and (for the synthesiser) the two prior reviews. The consensus prompt can approach several hundred KB; we use stdin today, which works but isn't obvious to anyone reading the workflow.
--prompt-filewould make the intent clear without a wrapper.Environment
1.0.49-p/stdin in GitHub Actions