1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# GitHub Copilot CLI.
#
# `--allow-all-tools` is what the CLI itself requires for non-interactive use, so
# the author invocation carries it and the reviewer's deliberately does not:
# without it no tool runs unconfirmed, which is exactly the reviewer's posture.
#
# `--disable-builtin-mcps` drops the GitHub MCP server, which reaches the
# operator's GitHub account and has nothing to do with the change under review.
# It is the only isolation this CLI offers that does not cost something else.
# The two that do are left out on purpose, and named here because `ostraka init`
# writes this file on its own and a profile should carry its own trade-offs:
#
# - `--no-custom-instructions` drops the operator's instruction files and the
# repository's own AGENTS.md together. Losing the repository's rules costs
# more than it buys on a machine with no user-level instructions file at all.
# - Relocating its config home (`XDG_CONFIG_HOME`) logs the CLI out, because
# `config.json` holds the login as well as the default model. The way back in
# is `GH_TOKEN` in the environment, which is the operator's call to make and
# not a profile's.
= "copilot-cli"
= "copilot"
= [
"-p",
"{{prompt}}",
"--allow-all-tools",
"--disable-builtin-mcps",
"--no-color",
"--log-level",
"none",
]
= [
"-p",
"{{prompt}}",
"--disable-builtin-mcps",
"--no-color",
"--log-level",
"none",
]
= ["--model", "{{model}}"]
# This CLI keeps its login beside its configuration, and the configuration
# directory is where XDG puts it — so an operator who moves XDG has moved the
# login, and the name has to come through. The tokens are the documented way in
# when there is no stored login at all.
= [
"COPILOT_GITHUB_TOKEN",
"GH_TOKEN",
"GITHUB_TOKEN",
"XDG_CONFIG_HOME",
"XDG_STATE_HOME",
]
= "none"
# `--silent` is gone from both invocations because it suppresses the usage
# summary along with the rest of the stats. It cost nothing to drop: the stats
# go to stderr, so stdout is still only the reply, and the verdict is found by
# its marker rather than by being the first line.
#
# This CLI writes the count before the label — `7.5k input, 4 output` — and
# rounds it. `approximate` says so, because a total summed from rounded parts is
# an estimate and a status line should not imply otherwise.
[]
= "stderr"
= "text"
= "before"
= ["input", "cache read"]
= "output"
= true
[]
= true
= false
= true