agent-policy-kit 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_INSTALL.md +126 -42
- package/CHANGELOG.md +93 -3
- package/README.md +21 -53
- package/bin/agent-policy.mjs +10 -10
- package/docs/README.md +46 -0
- package/docs/assets/configurator.png +0 -0
- package/docs/assets/subagent-limits.svg +44 -0
- package/docs/design/2026-11-01-documentation-structure.md +58 -0
- package/docs/guide/commands.md +375 -0
- package/docs/guide/configurator.md +163 -0
- package/docs/guide/getting-started.md +119 -0
- package/docs/guide/preferences.md +168 -0
- package/docs/guide/privacy.md +76 -0
- package/docs/guide/updates-and-removal.md +188 -0
- package/docs/maintainers/architecture.md +71 -0
- package/docs/maintainers/development.md +93 -0
- package/docs/maintainers/model-review.md +101 -0
- package/docs/maintainers/release.md +114 -0
- package/docs/maintainers/verification.md +95 -0
- package/docs/maintainers/website.md +112 -0
- package/docs/reference/assistants.md +165 -0
- package/docs/reference/model-catalog.md +194 -0
- package/docs/reference/ownership.md +177 -0
- package/docs/reference/presets.md +128 -0
- package/docs/reference/roles.md +157 -0
- package/docs/research/2026-11-01-model-review.md +341 -0
- package/docs/research/limits-evidence.md +28 -0
- package/models/README.md +2 -6
- package/models/catalog.json +57 -26
- package/package.json +7 -3
- package/policies/balanced.json +3 -3
- package/policies/fast.json +3 -13
- package/policies/quality.json +4 -14
- package/schema/policy.schema.json +2 -2
- package/site/index.html +108 -60
- package/src/detect.mjs +61 -13
- package/src/explicit.mjs +4 -4
- package/src/inspect.mjs +14 -13
- package/src/install.mjs +19 -13
- package/src/native.mjs +8 -8
- package/src/output.mjs +5 -5
- package/src/policy.mjs +2 -2
- package/src/release.mjs +1 -1
- package/src/setup.mjs +1 -1
- package/src/share.mjs +5 -5
- package/docs/architecture.md +0 -17
- package/docs/compatibility.md +0 -23
- package/docs/configuration-page.md +0 -44
- package/docs/deployment.md +0 -31
- package/docs/development.md +0 -21
- package/docs/installation.md +0 -23
- package/docs/model-catalog.md +0 -102
- package/docs/model-updates.md +0 -22
- package/docs/npm-release.md +0 -27
- package/docs/policy.md +0 -16
- package/docs/privacy.md +0 -9
- package/docs/recovery.md +0 -13
- package/docs/releases.md +0 -40
- package/docs/use-cases.md +0 -25
- package/docs/verification.md +0 -45
package/AGENT_INSTALL.md
CHANGED
|
@@ -1,79 +1,163 @@
|
|
|
1
1
|
# Agent Policy Kit — AI operator guide
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This guide is for an AI agent that installs, updates or removes Agent Policy Kit (APK) settings for its owner. It gives the steps in order: select the release, detect, choose the input, plan, apply, verify, remove and report. Flags, output fields and per-assistant details are in the linked documents. `agent-policy instructions` prints this guide.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Rules
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
APK is configuration-only. It writes native files and exits. It adds no hook, proxy, launcher, plugin, daemon, runtime audit or background updater. The native files stay independent after the npm package and the source are removed.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Obey these rules in every step:
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
1. Do the authorized setup or removal yourself. Do not give the owner a shell checklist.
|
|
12
|
+
2. Preserve main models, credentials, permissions, unrelated settings and later user edits.
|
|
13
|
+
3. Subagent preferences apply only when the main agent decides to delegate. Do not require delegation. Do not enable a disabled delegation feature.
|
|
14
|
+
4. Never log in, collect credentials, accept terms, start model tasks or publish anything.
|
|
15
|
+
5. Never weaken a sandbox or bypass a trust check to make an installation succeed. Never add a runtime gate to replace a missing native feature.
|
|
16
|
+
6. Read JSON. Add `--json` to every command. Captured output is JSON without the flag, but a terminal gets readable text.
|
|
17
|
+
7. Read every per-client result. One client can succeed while another fails. Never report a partial result as a full update.
|
|
18
|
+
8. Keep the state directory private. Its backups can contain existing secrets.
|
|
12
19
|
|
|
13
|
-
|
|
20
|
+
In the steps below, `agent-policy` means the pinned command for the requested release:
|
|
14
21
|
|
|
15
22
|
```sh
|
|
16
|
-
npx --yes --ignore-scripts --package agent-policy-kit@0.
|
|
17
|
-
npx --yes --ignore-scripts --package agent-policy-kit@0.2.0 agent-policy setup --release
|
|
23
|
+
npx --yes --ignore-scripts --package agent-policy-kit@0.4.0 agent-policy
|
|
18
24
|
```
|
|
19
25
|
|
|
20
|
-
|
|
26
|
+
## Step 1: Select the release
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
The package version is the configuration release. Use the version that the owner names, or the version in the command from the configurator.
|
|
23
29
|
|
|
24
|
-
|
|
30
|
+
1. Read the release notes:
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
npx --yes --ignore-scripts --package agent-policy-kit@0.4.0 agent-policy release --json
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. Read the entry for this version in [CHANGELOG.md](CHANGELOG.md): what changed, why, and the migration limits.
|
|
37
|
+
3. For a downgrade, also read the entry of each newer version, up to the version that is applied now. `doctor` shows the applied version of each client. A migration boundary is recorded in the entry of the newer version. The release notes of an older package do not contain newer entries, so run `release --json` with the applied version.
|
|
38
|
+
4. Check the installed tool versions, the model aliases that the account actually has, and the current official model and effort documentation.
|
|
39
|
+
5. Keep the explicit choices of the owner. A newer package or a newer model is not an instruction to switch.
|
|
40
|
+
|
|
41
|
+
For several commands, you can install the package into a temporary or user-owned prefix:
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
npm install --prefix PREFIX agent-policy-kit@0.4.0 --ignore-scripts --no-audit --no-fund
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Then run `PREFIX/node_modules/.bin/agent-policy`. If the owner gives you a verified local `.tgz` file of a version that is not on npm, install that file in the same way. You need no sudo, no fixed prefix and no shell profile change.
|
|
48
|
+
|
|
49
|
+
More: [updates and removal](docs/guide/updates-and-removal.md), [presets](docs/reference/presets.md), [model review procedure](docs/maintainers/model-review.md).
|
|
50
|
+
|
|
51
|
+
## Step 2: Detect
|
|
25
52
|
|
|
26
53
|
```sh
|
|
27
|
-
agent-policy
|
|
28
|
-
--roles reviewer,explorer \
|
|
29
|
-
--max-concurrent 3 \
|
|
30
|
-
--codex 'reviewer=gpt-6.1-sol:high,explorer=gpt-6-luna:high' \
|
|
31
|
-
--avoid-codex 'gpt-6-astra' \
|
|
32
|
-
--claude 'reviewer=sonnet:high,explorer=haiku:high' \
|
|
33
|
-
--avoid-claude 'opus,fable' \
|
|
34
|
-
--apply
|
|
54
|
+
npx --yes --ignore-scripts --package agent-policy-kit@0.4.0 agent-policy detect --json
|
|
35
55
|
```
|
|
36
56
|
|
|
37
|
-
|
|
57
|
+
1. Read the status of each assistant: `detected`, `not_found`, `invalid` or `timeout`.
|
|
58
|
+
2. APK needs a working executable. A leftover settings folder is not an installed assistant.
|
|
59
|
+
3. On macOS, `origin: desktop_app` means the CLI inside ChatGPT Desktop or Claude Desktop. It uses the standard native folder.
|
|
60
|
+
4. If `CODEX_HOME`, `CLAUDE_CONFIG_DIR`, `KIMI_CODE_HOME` or `GROK_HOME` points to a nonstandard folder, setup returns a prerequisite for that client and writes nothing. Do not change the variable to force a setup.
|
|
61
|
+
5. `--home PATH` selects the standard layout under another base folder. If you use `--home` or `--state-dir`, use the same values in every later command.
|
|
62
|
+
|
|
63
|
+
More: [assistants](docs/reference/assistants.md).
|
|
64
|
+
|
|
65
|
+
## Step 3: Choose the input
|
|
66
|
+
|
|
67
|
+
Use exactly one input mode. A combination fails before any write.
|
|
68
|
+
|
|
69
|
+
| Input | Use it when |
|
|
70
|
+
|---|---|
|
|
71
|
+
| Explicit tool arguments (`--roles`, `--max-concurrent`, `--chatgpt`, `--claude`, `--kimi`, `--gemini`, `--grok` and their options) | The owner gives a command from the configurator. Keep its shell quotes and line continuations |
|
|
72
|
+
| `setup --release --preset fast`, `balanced` or `quality` | The owner wants a named preset of this release. This is the supported path to upgrade or downgrade to a pinned release |
|
|
73
|
+
| `setup --config BASE64URL` | The owner gives encoded preferences. Decode and inspect the JSON first. It must contain preferences only, never credentials or executable content |
|
|
74
|
+
| `setup --policy FILE` | The owner keeps a preferences file. This mode does not replace different saved choices. To replace them deliberately, validate the file and pass it as `--config` |
|
|
75
|
+
|
|
76
|
+
The configurator command lists every selected role for every selected assistant. The tools that it does not name are not configured.
|
|
77
|
+
|
|
78
|
+
Some release changes cross a migration boundary. For example, to move Claude from 0.4.0 to 0.3.0, first remove its settings with 0.4.0. Read [migration boundaries](docs/guide/updates-and-removal.md#migration-boundaries) before an upgrade or a downgrade.
|
|
79
|
+
|
|
80
|
+
More: [commands](docs/guide/commands.md), [preferences](docs/guide/preferences.md).
|
|
81
|
+
|
|
82
|
+
## Step 4: Plan
|
|
83
|
+
|
|
84
|
+
1. Run the chosen setup command without `--apply`.
|
|
85
|
+
2. Read the overall `status` and each entry in `results`.
|
|
86
|
+
3. Read each entry in `requiredActions`.
|
|
87
|
+
|
|
88
|
+
Exit code 3 means one of these conditions:
|
|
89
|
+
|
|
90
|
+
- No selected assistant was detected.
|
|
91
|
+
- At least one selected assistant returned a prerequisite, an error, or an invalid or timed-out detection.
|
|
92
|
+
|
|
93
|
+
The other clients still have valid results.
|
|
94
|
+
|
|
95
|
+
Resolve a prerequisite only in a way that preserves the main behavior:
|
|
96
|
+
|
|
97
|
+
- Kimi needs provisioned aliases, provider metadata and supported efforts. Do not invent them. Do not change the main thinking setting to install a helper.
|
|
98
|
+
- If a selected Kimi alias also serves the main model, a changed effort default returns `kimi-main-effort-conflict`. Use a separate compatible alias, or prepare a native variant that keeps the main behavior.
|
|
99
|
+
- `claude-force-model-conflict` means that the Claude settings force one subagent model. It needs an explicit decision about that native setting from the owner.
|
|
100
|
+
|
|
101
|
+
More: [commands](docs/guide/commands.md), [assistants](docs/reference/assistants.md).
|
|
102
|
+
|
|
103
|
+
## Step 5: Apply
|
|
104
|
+
|
|
105
|
+
1. Add `--apply` to the same command that you planned. A configuration that the owner already authorized needs no second confirmation.
|
|
106
|
+
2. Read each result. `configured` and `unchanged` are successful results.
|
|
107
|
+
|
|
108
|
+
APK updates owned files in a transaction for each client, without a removal gap. Drift or a missing prerequisite keeps the existing release of that client. A late failure rolls that client back.
|
|
38
109
|
|
|
39
|
-
|
|
110
|
+
## Step 6: Verify
|
|
40
111
|
|
|
41
|
-
|
|
112
|
+
1. Run `doctor`:
|
|
42
113
|
|
|
43
|
-
|
|
114
|
+
```sh
|
|
115
|
+
npx --yes --ignore-scripts --package agent-policy-kit@0.4.0 agent-policy doctor --json
|
|
116
|
+
```
|
|
44
117
|
|
|
45
|
-
|
|
46
|
-
- setup --config BASE64URL explicitly applies custom choices through this version's templates. This legacy encoded input remains supported. Decode/inspect the JSON; it must contain preferences only, never credentials or executable content.
|
|
47
|
-
- init --policy FILE creates editable defaults without overwriting. setup --policy FILE is a conservative advanced workflow; ordinary mismatching setup refuses replacement. To deliberately replace saved choices from a file, validate it, encode its JSON with Buffer.from(JSON.stringify(preferences)).toString('base64url'), and use --config.
|
|
118
|
+
Each client reports its saved release, source and preset from its receipt, independent of the version that runs `doctor`. `verified` means that the owned files match the receipt.
|
|
48
119
|
|
|
49
|
-
|
|
120
|
+
2. Run `show` to read the current user-level subagent settings, including manual edits:
|
|
50
121
|
|
|
51
|
-
|
|
122
|
+
```sh
|
|
123
|
+
npx --yes --ignore-scripts --package agent-policy-kit@0.4.0 agent-policy show --json
|
|
124
|
+
```
|
|
52
125
|
|
|
53
|
-
|
|
126
|
+
`show` does not resolve project, managed or session settings. It exits with code 3 when a client needs attention, and it keeps the results of the other clients.
|
|
54
127
|
|
|
55
|
-
|
|
128
|
+
3. Tell the owner that a native client can need a new session to load the changes. Do not stop active sessions.
|
|
56
129
|
|
|
57
|
-
|
|
130
|
+
A verified configuration does not prove that a model runs. After verification, you can remove the npm package or the temporary prefix. Keep the state directory: its receipts are necessary for a later owned removal.
|
|
58
131
|
|
|
59
|
-
|
|
132
|
+
## Step 7: Remove
|
|
60
133
|
|
|
61
|
-
|
|
134
|
+
1. Plan the removal:
|
|
62
135
|
|
|
63
|
-
|
|
136
|
+
```sh
|
|
137
|
+
npx --yes --ignore-scripts --package agent-policy-kit@0.4.0 agent-policy uninstall --json
|
|
138
|
+
```
|
|
64
139
|
|
|
65
|
-
|
|
140
|
+
2. Review the plan.
|
|
141
|
+
3. Run the same command with `--apply`.
|
|
66
142
|
|
|
67
|
-
The
|
|
143
|
+
The receipts verify ownership. Removal restores the original user settings and keeps unrelated later edits. APK refuses to remove an owned file that someone edited.
|
|
68
144
|
|
|
69
|
-
|
|
145
|
+
- Do not restore old whole-file backups.
|
|
146
|
+
- Do not delete locks or pending journals by force.
|
|
147
|
+
- Do not delete hooks by text match.
|
|
148
|
+
- Use a version that can read the receipt. All versions from 0.1.0 write receipt format v4, but an older version can refuse the content of a newer receipt. Versions 0.3.0 and earlier cannot read a 0.4.0 Claude receipt that owns `CLAUDE_CODE_SUBAGENT_EFFORT`: remove it with 0.4.0. ChatGPT and Gemini settings from 0.2.0 or earlier need removal with the version that created them. See [migration boundaries](docs/guide/updates-and-removal.md#migration-boundaries).
|
|
70
149
|
|
|
71
|
-
|
|
150
|
+
More: [ownership](docs/reference/ownership.md), [updates and removal](docs/guide/updates-and-removal.md).
|
|
72
151
|
|
|
73
|
-
##
|
|
152
|
+
## Step 8: Report
|
|
74
153
|
|
|
75
|
-
|
|
154
|
+
Give the owner a short result for each client:
|
|
76
155
|
|
|
77
|
-
|
|
156
|
+
- Detection: status, version and origin.
|
|
157
|
+
- Result: the status, for example `configured`, `unchanged`, `prerequisite` or `error`, and its codes.
|
|
158
|
+
- Applied release, source and preset, from `doctor`.
|
|
159
|
+
- Required actions that remain.
|
|
160
|
+
- Whether a new session is necessary.
|
|
161
|
+
- What is not checked: model execution, provider identity, entitlement and alias resolution.
|
|
78
162
|
|
|
79
|
-
|
|
163
|
+
Receipts are the applied truth. `policy.json` in the state directory is only the latest requested snapshot, so it can differ from an older client. Kimi and Gemini limits and all avoid lists are guidance, not hard caps. A public release, a deployment or a live model task is not part of this work.
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,96 @@
|
|
|
2
2
|
|
|
3
3
|
Each npm version is one configuration release: its presets, native role definitions, instructions and configuration page. Published versions are not rewritten. Applying another release is explicit; package installation alone changes no settings.
|
|
4
4
|
|
|
5
|
+
## 0.4.0 — 2026-11-01
|
|
6
|
+
|
|
7
|
+
### Why this release
|
|
8
|
+
|
|
9
|
+
The presets and the model catalog were checked again on 2026-11-01 against the installed native clients and current vendor documentation. No vendor released or retired a subagent model since 2026-10-30. The new evidence changes where effort is spent, and it shows that Claude's top model is Opus 5.5, not Fable 5.1.
|
|
10
|
+
|
|
11
|
+
### Who should update
|
|
12
|
+
|
|
13
|
+
- Anyone who uses ChatGPT or Claude presets and wants the revised effort levels.
|
|
14
|
+
- Anyone who uses the Top-tier top models switch in Claude.
|
|
15
|
+
- Claude Code 2.1.316+ users who want subagents without a named role to stop inheriting the main session effort.
|
|
16
|
+
|
|
17
|
+
Kimi, Gemini and Grok preset values do not change, so their 0.3.0 installations need no update.
|
|
18
|
+
|
|
19
|
+
### Migration and rollback
|
|
20
|
+
|
|
21
|
+
Assistant IDs, preset ids (`fast`, `balanced`, `quality`), share-link format v2 and receipt format v4 are unchanged. Setup with 0.4.0 replaces a 0.3.0 installation in place, and receipts written by 0.3.0 still validate and uninstall. Setup with 0.3.0 moves ChatGPT, Kimi, Gemini and Grok back.
|
|
22
|
+
|
|
23
|
+
Claude has a migration boundary in the downgrade direction. A 0.4.0 Claude receipt owns a third setting, `CLAUDE_CODE_SUBAGENT_EFFORT`, whenever the Coder effort is pinned, and every preset pins it. Version 0.3.0 does not know this setting, so its setup reports `INVALID_RECEIPT` and changes nothing. To move Claude back to 0.3.0, first remove its settings with 0.4.0: `npx --yes --ignore-scripts --package agent-policy-kit@0.4.0 agent-policy uninstall --client claude --apply`. Then set up with 0.3.0. This was checked with the 0.3.0 source in an isolated home. Removal restores the value that the setting had before setup, or removes it. Share links of 0.3.0 open on the 0.3.0 page.
|
|
24
|
+
|
|
25
|
+
### Presets and model catalog
|
|
26
|
+
|
|
27
|
+
Re-running setup applies these values. Installations keep their current values until then.
|
|
28
|
+
|
|
29
|
+
- **Light, ChatGPT:** the Coder runs Luna at high instead of medium, the starting level OpenAI suggests for Luna. Luna stays the cheapest Codex model.
|
|
30
|
+
- **Standard, ChatGPT:** the Docs writer uses GPT-6.1 Terra at medium instead of GPT-6.1 Sol. OpenAI positions Terra for clear writing, at half of Sol's usage.
|
|
31
|
+
- **Top-tier, ChatGPT and Claude:** the Code explorer and Docs writer keep GPT-6.1 Sol and Opus 5.5 but run at medium instead of high. Implementation, review and tests stay at high.
|
|
32
|
+
- **Top models switch, Claude:** Coder, Reviewer and Test writer use Opus 5.5 at xhigh instead of Fable 5.1 at high. Anthropic's own benchmarks put Opus 5.5 ahead of Fable 5.1 on every published coding benchmark at 2.5 times lower price, and Anthropic suggests a higher Opus effort before Fable. Fable 5.1 stays available in Custom. The switch now sets a model and an effort; ChatGPT and Kimi keep GPT-6 Astra and K3.1 Pro at high.
|
|
33
|
+
|
|
34
|
+
The catalog snapshot is dated 2026-11-01:
|
|
35
|
+
|
|
36
|
+
- GPT-5.5 is marked retired from Codex for ChatGPT sign-in on 2026-10-14; it remains for API-key sign-in.
|
|
37
|
+
- GPT-6 Astra's native default effort is medium in the signed-in server catalog; the bundled value low is kept as `bundledDefaultEffort`. The hidden, undocumented `gpt-reserve` selector is excluded.
|
|
38
|
+
- Claude Code 2.1.316, Kimi Code 2.4.1 and Antigravity 1.4.12 are the observed client versions. Opus 4.5 and Haiku 4.5 record their earliest retirement dates.
|
|
39
|
+
- Kimi records plan requirements: K3 and K3.1 Pro need Plus or higher, and the 1M context of K3 needs Pro or higher.
|
|
40
|
+
- Antigravity's Flash Lite tier is marked undocumented: the CLI accepts it, but the subagent documentation lists only inherit, Flash and Pro.
|
|
41
|
+
- Grok 4.7's reasoning levels (low to xhigh) are recorded as API capabilities. APK still writes only a model for each Grok role, so subagents use the main session effort.
|
|
42
|
+
|
|
43
|
+
Configuration checks are not model-quality evaluations.
|
|
44
|
+
|
|
45
|
+
### What changed
|
|
46
|
+
|
|
47
|
+
- Claude: setup also writes `CLAUDE_CODE_SUBAGENT_EFFORT`, the effort for subagents that name none, from the Coder effort capped at high. Claude Code 2.1.316 added this setting; earlier versions ignore it. Before, those subagents kept the main session effort.
|
|
48
|
+
- `agent-policy show` reports the stored Claude default subagent effort and a `CLAUDE_CODE_SUBAGENT_EFFORT` environment override.
|
|
49
|
+
- The top models switch label shows each tool's model and effort.
|
|
50
|
+
- The website deployment guard also compares `src/release.mjs` with the release tag, because the page embeds its preset labels and top choices.
|
|
51
|
+
- The configurator shows a note when Gemini is selected: APK configures Antigravity, not Gemini CLI. The README and the AI assistants reference say the same.
|
|
52
|
+
- The documentation is reorganized into independent documents by audience: `docs/guide/` for people who use APK, `docs/reference/` for facts about assistants, roles, presets, the catalog and ownership, `docs/research/` for the evidence behind presets, and `docs/maintainers/` for development, releases and the website. [docs/README.md](docs/README.md) is the index. Old `docs/*.md` paths are removed without redirects. The 2026-11-01 model review is documented in [docs/research/2026-11-01-model-review.md](docs/research/2026-11-01-model-review.md).
|
|
53
|
+
|
|
54
|
+
## 0.3.0 — 2026-11-01
|
|
55
|
+
|
|
56
|
+
### Why this release
|
|
57
|
+
|
|
58
|
+
People know their assistants as ChatGPT, Claude, Kimi, Gemini and Grok, not by the names of the coding agents inside them. The configurator and the CLI now use those names. Some people use only the desktop apps, and they have no CLI on PATH. Before this release, setup found nothing for them.
|
|
59
|
+
|
|
60
|
+
### Who should update
|
|
61
|
+
|
|
62
|
+
- Anyone who uses Codex in ChatGPT Desktop or Claude Code in the Code tab of Claude Desktop on macOS without a separate CLI.
|
|
63
|
+
- Anyone who wants the general assistant names on the page and in the terminal.
|
|
64
|
+
|
|
65
|
+
Preset values do not change, so an installation of 0.2.0 keeps working without an update.
|
|
66
|
+
|
|
67
|
+
### Breaking change
|
|
68
|
+
|
|
69
|
+
AI assistants now have general names: ChatGPT, Claude, Kimi, Gemini and Grok. APK still configures their coding agents: Codex, Claude Code, Kimi Code, Antigravity and Grok Build. Two technical IDs changed, and there is no migration:
|
|
70
|
+
|
|
71
|
+
- `codex` is now `chatgpt`: `--chatgpt`, `--chatgpt-max-concurrent`, `--avoid-chatgpt`, `--client chatgpt` and the `clients.chatgpt` policy key.
|
|
72
|
+
- `agy` is now `gemini`: `--gemini`, `--gemini-max-concurrent`, `--avoid-gemini`, `--client gemini` and the `clients.gemini` policy key.
|
|
73
|
+
- Warning and error codes follow the new IDs, for example `chatgpt-native-precedence-limits` and `CHATGPT_CAP_ALIAS_CONFLICT`.
|
|
74
|
+
|
|
75
|
+
Before you use this version, remove the APK settings for these two assistants with the version that created them: `npx --yes --ignore-scripts --package agent-policy-kit@0.2.0 agent-policy uninstall --apply`. This version does not read the old `codex` and `agy` installation receipts, so its setup refuses the existing `apk-*` files as unowned. Policy files and share links that use the old IDs are refused too. Claude, Kimi and Grok keep their IDs.
|
|
76
|
+
|
|
77
|
+
### Migration and rollback
|
|
78
|
+
|
|
79
|
+
The two renamed IDs set a migration boundary. These results come from tests with the published 0.2.0 package and this release:
|
|
80
|
+
|
|
81
|
+
- **ChatGPT (Codex) and Gemini (Antigravity):** remove the APK settings with the version that created them before you set up with the other version. A move in either direction without removal reports `OWNERSHIP_CONFLICT` and changes nothing. After removal, setup with the other version succeeds.
|
|
82
|
+
- **Claude, Kimi and Grok:** their IDs and receipt format v4 are unchanged. In the tests, setup with 0.3.0 upgraded 0.2.0 installations of Claude and Grok in place, and setup with 0.2.0 moved Claude back. Kimi uses the same receipt format, but it was not tested with a provisioned model pool.
|
|
83
|
+
|
|
84
|
+
`uninstall --apply` removes the settings of every assistant. Run setup again afterwards for the assistants you use.
|
|
85
|
+
|
|
86
|
+
### Presets and model catalog
|
|
87
|
+
|
|
88
|
+
Preset models, effort levels and parallel limits are the same as in 0.2.0. Only the keys `codex` and `agy` became `chatgpt` and `gemini`, and the catalog labels became the general names. The model catalog snapshot is still dated 2026-10-30, with the Grok entries checked on 2026-11-01. Configuration checks are not model-quality evaluations.
|
|
89
|
+
|
|
90
|
+
### What changed
|
|
91
|
+
|
|
92
|
+
- The configurator calls the second step "AI assistants" and shows the general names. Readable CLI output uses the same names.
|
|
93
|
+
- On macOS, setup finds the Codex that ChatGPT Desktop includes and the Claude Code in the Code tab of Claude Desktop, also when no CLI is on PATH. Both apps read the same settings as their CLIs. A CLI on PATH or in a conventional location still has priority. Detect output reports these clients with `origin: "desktop_app"`. Claude Cowork reads its settings from the Claude account, so APK does not configure it.
|
|
94
|
+
|
|
5
95
|
## 0.2.0 — 2026-11-01
|
|
6
96
|
|
|
7
97
|
### Why this release
|
|
@@ -50,9 +140,9 @@ Use a common approach to optional delegation across Codex, Claude Code, Kimi and
|
|
|
50
140
|
|
|
51
141
|
### What it configures
|
|
52
142
|
|
|
53
|
-
Six focused roles cover implementation, read-only review, code discovery, test creation, documentation and prescribed execution. Each preset assigns a model and supported effort to every role; the [preset matrix](docs/
|
|
143
|
+
Six focused roles cover implementation, read-only review, code discovery, test creation, documentation and prescribed execution. Each preset assigns a model and supported effort to every role; the [preset matrix](docs/reference/presets.md) explains the choices.
|
|
54
144
|
|
|
55
|
-
These are starting preferences, not model-quality benchmarks. Native model formats and alias behavior were reviewed against the official sources linked in [support](docs/
|
|
145
|
+
These are starting preferences, not model-quality benchmarks. Native model formats and alias behavior were reviewed against the official sources linked in [support](docs/reference/assistants.md) and [model maintenance](docs/maintainers/model-review.md). Model availability must be checked before applying. Provider aliases and tiers may resolve differently over time.
|
|
56
146
|
|
|
57
147
|
### Presets and model catalog
|
|
58
148
|
|
|
@@ -92,7 +182,7 @@ People who want consistent subagent preferences across their installed coding to
|
|
|
92
182
|
npx --yes --ignore-scripts --package agent-policy-kit@0.1.0 agent-policy setup --release --apply
|
|
93
183
|
```
|
|
94
184
|
|
|
95
|
-
Without --apply the same command previews the changes. The page-generated explicit tool arguments apply the visible choices using this release's native templates. See [release usage](docs/
|
|
185
|
+
Without --apply the same command previews the changes. The page-generated explicit tool arguments apply the visible choices using this release's native templates. See [release usage](docs/guide/updates-and-removal.md).
|
|
96
186
|
|
|
97
187
|
### Migration and limits
|
|
98
188
|
|
package/README.md
CHANGED
|
@@ -2,69 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
Created and maintained by [Mykola Maksymenko](https://www.linkedin.com/in/nick-maximenko/).
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Stop subagents from burning your plan limits.** Agent Policy Kit (APK) gives each subagent role a model that fits the task and your plan in ChatGPT, Claude, Kimi, Gemini and Grok. You run one command, and then APK exits.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+

|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
flowchart LR
|
|
11
|
-
Roles("1. Choose subagent roles") --> Tools("2. Choose your coding tools")
|
|
12
|
-
Tools --> Models("3. Choose models and effort")
|
|
13
|
-
Models --> Command("4. Run one setup command")
|
|
14
|
-
Command --> Done("Native configs saved<br/>APK exits")
|
|
15
|
-
classDef default fill:#f5f7fb,stroke:#e0e5ed,color:#19283e
|
|
16
|
-
classDef action fill:#3158c3,stroke:#3158c3,color:#ffffff
|
|
17
|
-
class Command action
|
|
18
|
-
```
|
|
9
|
+
<sub>My own Codex logs; tasks differed between the runs. [How it was measured](docs/research/limits-evidence.md).</sub>
|
|
19
10
|
|
|
20
|
-
##
|
|
11
|
+
## Set it up
|
|
21
12
|
|
|
22
|
-
Open the [
|
|
13
|
+
1. Open the [configurator](https://agent-policy-kit.trymenow.io/). Select roles, your AI assistants and a mode: **Light**, **Standard** or **Top-tier**. The mode sets how much of your plan subagents can use.
|
|
14
|
+
2. Copy the command and run it. To preview first, delete the last line (`--apply`) and the ` \` at the end of the line before it. Without `--apply`, APK writes nothing.
|
|
23
15
|
|
|
24
|
-
|
|
16
|
+

|
|
25
17
|
|
|
26
|
-
|
|
18
|
+
[Getting started](docs/guide/getting-started.md) shows the full path, from the configurator to removal.
|
|
27
19
|
|
|
28
|
-
|
|
20
|
+
## Good to know
|
|
29
21
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
| Test writer | Tests and targeted execution; product fixes return to Coder |
|
|
36
|
-
| Docs writer | Verified docs, examples and release notes |
|
|
37
|
-
| Task runner | Prescribed commands and mechanical edits; uncertain decisions return to the parent |
|
|
22
|
+
- Your main agent and its model do not change. The main agent still decides when to delegate.
|
|
23
|
+
- APK configures the coding agent of each assistant: Codex in ChatGPT, Claude Code in Claude, Kimi Code, Antigravity for Gemini, and Grok Build. Plain chats do not change. [Assistants](docs/reference/assistants.md) lists the details, also for the desktop apps.
|
|
24
|
+
- APK adds no proxy and no background process. You can delete the npm package after setup.
|
|
25
|
+
- `npx --yes --ignore-scripts --package agent-policy-kit@0.4.0 agent-policy show` reads your current settings. Use `uninstall --apply` instead of `show` to remove the APK settings and keep yours.
|
|
26
|
+
- Apart from the npm download, APK makes no network requests. [Privacy](docs/guide/privacy.md) tells what it reads and writes.
|
|
38
27
|
|
|
39
|
-
|
|
28
|
+
## Documentation
|
|
40
29
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
```sh
|
|
46
|
-
npx --yes --ignore-scripts --package agent-policy-kit@0.2.0 agent-policy setup --release --apply
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Omit --apply to preview. Each version includes its own presets, instructions and configuration page. [Release notes](CHANGELOG.md) explain what changed and why; [release usage](docs/releases.md) covers upgrade and downgrade.
|
|
50
|
-
|
|
51
|
-
Prefer your AI agent to handle installation or removal? Give it the [AI operator guide](AGENT_INSTALL.md).
|
|
52
|
-
|
|
53
|
-
## Read your current setup
|
|
54
|
-
|
|
55
|
-
Run `agent-policy show` to read existing user-level subagent settings, including settings created before APK. Use `--client codex` to inspect one tool. The command shows roles, models, effort and concurrency without changing files or starting model tasks. Project and session settings can override these user-level values.
|
|
56
|
-
|
|
57
|
-
Configuration commands show a short summary in an interactive terminal. Captured output remains JSON. Add `--json` to request JSON explicitly.
|
|
58
|
-
|
|
59
|
-
Open an individual coding tool's details to set its maximum concurrent subagents from 1 to 32. Each tool has its own limit per session. Presets start at Light 2, Standard 3 and Top-tier 2; a manual limit makes that tool Custom. Kimi and Antigravity treat it as guidance; Grok Build applies it as a native cap.
|
|
60
|
-
|
|
61
|
-
[Model catalog](docs/model-catalog.md) · [Support](docs/compatibility.md) · [Model updates](docs/model-updates.md) · [Privacy](docs/privacy.md) · [Verification](docs/verification.md)
|
|
62
|
-
|
|
63
|
-
Node.js 22.x (22.13+) or 24+; macOS/Linux. Version 0.2.0. MIT licensed.
|
|
30
|
+
- [Documentation index](docs/README.md)
|
|
31
|
+
- [Presets](docs/reference/presets.md)
|
|
32
|
+
- [Release notes](CHANGELOG.md)
|
|
33
|
+
- [AI operator guide](AGENT_INSTALL.md)
|
|
64
34
|
|
|
65
35
|
## Related projects
|
|
66
36
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
- [Agents Can Communicate (ACC)](https://github.com/automatis-tools/agents-can-communicate) connects independent AI coding sessions across clients for local questions, code reviews, and handoffs. [Website](https://getacc.dev/).
|
|
70
|
-
- [Automatis Skills](https://github.com/automatis-tools/automatis-skills) provides reusable engineering skills for GitHub workflows, Git cleanup, port conflicts, and technical writing.
|
|
37
|
+
- [Agents Can Communicate (ACC)](https://github.com/automatis-tools/agents-can-communicate): connect independent AI coding sessions for questions, reviews and handoffs.
|
|
38
|
+
- [Automatis Skills](https://github.com/automatis-tools/automatis-skills): reusable engineering skills for GitHub workflows, Git cleanup and technical writing.
|
package/bin/agent-policy.mjs
CHANGED
|
@@ -28,7 +28,7 @@ Usage: agent-policy <command> [options]
|
|
|
28
28
|
|
|
29
29
|
instructions Print the AI setup and removal guide
|
|
30
30
|
init Copy default preferences to --policy (never overwrite)
|
|
31
|
-
detect Detect installed
|
|
31
|
+
detect Detect installed AI assistants from executable identity
|
|
32
32
|
release Show this package's configuration version and release notes
|
|
33
33
|
setup Plan native configuration; add --apply to write
|
|
34
34
|
install Plan one --client or all detected clients
|
|
@@ -36,17 +36,17 @@ Usage: agent-policy <command> [options]
|
|
|
36
36
|
doctor Check owned native configuration without model calls
|
|
37
37
|
show Read current user-level native subagent configuration
|
|
38
38
|
|
|
39
|
-
Options: --client
|
|
39
|
+
Options: --client chatgpt|claude|kimi|gemini|grok --home PATH --state-dir PATH
|
|
40
40
|
--policy FILE | --release [--preset fast|balanced|quality] | --config BASE64URL
|
|
41
41
|
--roles worker,reviewer,explorer,tester,writer,routine --max-concurrent 3
|
|
42
|
-
--
|
|
43
|
-
--kimi ROLE=ALIAS:EFFORT,... --
|
|
44
|
-
--
|
|
45
|
-
--kimi-max-concurrent N --
|
|
46
|
-
--avoid-
|
|
42
|
+
--chatgpt ROLE=MODEL:EFFORT,... --claude ROLE=MODEL:EFFORT,...
|
|
43
|
+
--kimi ROLE=ALIAS:EFFORT,... --gemini ROLE=TIER,... --grok ROLE=MODEL,...
|
|
44
|
+
--chatgpt-max-concurrent N --claude-max-concurrent N
|
|
45
|
+
--kimi-max-concurrent N --gemini-max-concurrent N --grok-max-concurrent N
|
|
46
|
+
--avoid-chatgpt MODELS --avoid-claude MODELS --avoid-kimi MODELS --avoid-gemini MODELS --avoid-grok MODELS
|
|
47
47
|
--apply --json --help --version
|
|
48
48
|
|
|
49
|
-
Explicit tool input requires --roles and --max-concurrent. Use :native for unpinned effort.
|
|
49
|
+
Explicit tool input requires --roles and --max-concurrent. Use :native for unpinned effort. Gemini and Grok take ROLE=TIER and ROLE=MODEL with no effort.
|
|
50
50
|
Include every selected role for each selected tool. Per-tool concurrency overrides the shared fallback.
|
|
51
51
|
Avoid lists are comma-separated.
|
|
52
52
|
State defaults to AGENT_POLICY_HOME or ~/.agent-policy-kit.
|
|
@@ -149,8 +149,8 @@ async function main(){
|
|
|
149
149
|
catch(error){configuration={status:'attention',reason:safeCode(error.code)};}
|
|
150
150
|
}
|
|
151
151
|
report.clients[selected]={detection,configuration,modelExecution:'not_checked',
|
|
152
|
-
concurrency:['
|
|
153
|
-
models:selected==='
|
|
152
|
+
concurrency:['chatgpt','claude','grok'].includes(selected)?'native_setting_with_client_exceptions':'instructions_only',
|
|
153
|
+
models:selected==='gemini'?'native_tiers':selected==='kimi'?'native_pool_with_routing_guidance':'native_role_settings'};
|
|
154
154
|
}
|
|
155
155
|
print(report);
|
|
156
156
|
}
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Agent Policy Kit documentation
|
|
2
|
+
|
|
3
|
+
This index tells you which document answers your question. Each document covers one topic and can be read on its own. Documents are grouped by who reads them.
|
|
4
|
+
|
|
5
|
+
## Use APK
|
|
6
|
+
|
|
7
|
+
| Question | Document |
|
|
8
|
+
|---|---|
|
|
9
|
+
| How do I set up subagent roles for the first time? | [Getting started](guide/getting-started.md) |
|
|
10
|
+
| How does the configuration page work, and how do I share a setup? | [Configurator](guide/configurator.md) |
|
|
11
|
+
| Which commands, flags and output formats does the CLI have? | [Commands](guide/commands.md) |
|
|
12
|
+
| How do I write my own preferences file? | [Preferences](guide/preferences.md) |
|
|
13
|
+
| How do I update, downgrade, remove or recover a setup? | [Updates and removal](guide/updates-and-removal.md) |
|
|
14
|
+
| What does APK read and write, and what does it never send? | [Privacy](guide/privacy.md) |
|
|
15
|
+
|
|
16
|
+
An AI agent that installs APK for you follows the [AI operator guide](../AGENT_INSTALL.md).
|
|
17
|
+
|
|
18
|
+
## Look up facts
|
|
19
|
+
|
|
20
|
+
| Question | Document |
|
|
21
|
+
|---|---|
|
|
22
|
+
| What does APK write for each AI assistant, and what are the native limits? | [AI assistants](reference/assistants.md) |
|
|
23
|
+
| What do the six roles do, and which model does a subagent without a role use? | [Roles](reference/roles.md) |
|
|
24
|
+
| Which model and effort does each preset choose, and why? | [Presets](reference/presets.md) |
|
|
25
|
+
| Which models and effort levels does this release know? | [Model catalog](reference/model-catalog.md) |
|
|
26
|
+
| How does APK track its own settings, and what is drift? | [Ownership and state](reference/ownership.md) |
|
|
27
|
+
|
|
28
|
+
## Evidence
|
|
29
|
+
|
|
30
|
+
| Question | Document |
|
|
31
|
+
|---|---|
|
|
32
|
+
| What evidence supports the 0.4.0 presets? | [Model review of 2026-11-01](research/2026-11-01-model-review.md) |
|
|
33
|
+
| How was the limit illustration in the README measured? | [Limits evidence](research/limits-evidence.md) |
|
|
34
|
+
|
|
35
|
+
## Maintain APK
|
|
36
|
+
|
|
37
|
+
| Question | Document |
|
|
38
|
+
|---|---|
|
|
39
|
+
| How is the code organized? | [Architecture](maintainers/architecture.md) |
|
|
40
|
+
| How do I set up a development environment and run the tests? | [Development](maintainers/development.md) |
|
|
41
|
+
| How do I review models and presets for a release? | [Model review procedure](maintainers/model-review.md) |
|
|
42
|
+
| How do I prepare and publish a release? | [Release](maintainers/release.md) |
|
|
43
|
+
| How is the configuration page built and deployed? | [Website](maintainers/website.md) |
|
|
44
|
+
| What was verified for each release? | [Verification](maintainers/verification.md) |
|
|
45
|
+
|
|
46
|
+
Design decisions are recorded as dated documents in `docs/design/`. Release notes are in the [changelog](../CHANGELOG.md).
|
|
Binary file
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="apk-limits" viewBox="0 0 880 322" width="880" height="322" role="img" aria-labelledby="apk-limits-title">
|
|
2
|
+
<title id="apk-limits-title">One weekly Codex limit lasted 5.3 h of my work without APK and 25 h with APK</title>
|
|
3
|
+
<defs>
|
|
4
|
+
<pattern id="apk-limits-hatch" width="8" height="8" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
|
|
5
|
+
<rect width="8" height="8" class="hb"/><line x1="0" y1="0" x2="0" y2="8" class="hl"/>
|
|
6
|
+
</pattern>
|
|
7
|
+
</defs>
|
|
8
|
+
<style>
|
|
9
|
+
.apk-limits { --bg:#ffffff; --ink:#0b0b0b; --ink2:#52514e; --ink3:#8a8984; --hb:#f4f3ef; --hl:#e2e0d9; --before:#eb6834; --after:#2a78d6; }
|
|
10
|
+
@media (prefers-color-scheme: dark) {
|
|
11
|
+
.apk-limits { --bg:#0d1117; --ink:#f0efec; --ink2:#c3c2b7; --ink3:#8b8a82; --hb:#141920; --hl:#262c35; --before:#d95926; --after:#3987e5; }
|
|
12
|
+
}
|
|
13
|
+
.apk-limits text { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; fill: var(--ink); }
|
|
14
|
+
.apk-limits .bg { fill: var(--bg); }
|
|
15
|
+
.apk-limits .h1 { font-size: 24px; font-weight: 700; }
|
|
16
|
+
.apk-limits .sub { font-size: 14px; fill: var(--ink2); }
|
|
17
|
+
.apk-limits .day { font-size: 12px; font-weight: 600; fill: var(--ink3); }
|
|
18
|
+
.apk-limits .hb { fill: var(--hb); } .apk-limits .hl { stroke: var(--hl); stroke-width: 3; }
|
|
19
|
+
.apk-limits .before { fill: var(--before); } .apk-limits .after { fill: var(--after); }
|
|
20
|
+
.apk-limits .sep { stroke: var(--bg); stroke-width: 2; }
|
|
21
|
+
.apk-limits .rl { font-size: 15px; font-weight: 650; }
|
|
22
|
+
.apk-limits .rn { font-size: 14px; font-weight: 400; fill: var(--ink2); }
|
|
23
|
+
.apk-limits .val { font-size: 18px; font-weight: 700; }
|
|
24
|
+
.apk-limits .chip { fill: var(--bg); }
|
|
25
|
+
</style>
|
|
26
|
+
<rect class="bg" width="880" height="322" rx="12"/>
|
|
27
|
+
<text class="h1" x="32" y="48">One weekly limit: 5.3 h vs 25 h of work</text>
|
|
28
|
+
<text class="sub" x="32" y="74">My own Codex work on the same plan, in 8-hour workdays. Hatched: limit used up.</text>
|
|
29
|
+
<text class="day" x="113.6" y="114" text-anchor="middle">Mon</text><text class="day" x="276.8" y="114" text-anchor="middle">Tue</text><text class="day" x="440.0" y="114" text-anchor="middle">Wed</text><text class="day" x="603.2" y="114" text-anchor="middle">Thu</text><text class="day" x="766.4" y="114" text-anchor="middle">Fri</text>
|
|
30
|
+
|
|
31
|
+
<text class="rl" x="32" y="140">Without APK<tspan class="rn"> · half of subagent work ran on the top model</tspan></text>
|
|
32
|
+
<rect fill="url(#apk-limits-hatch)" x="32" y="152" width="816" height="48" rx="8"/>
|
|
33
|
+
<rect class="before" x="32" y="152" width="108.8" height="48" rx="8"/>
|
|
34
|
+
<line class="sep" x1="195.2" x2="195.2" y1="152" y2="200"/><line class="sep" x1="358.4" x2="358.4" y1="152" y2="200"/><line class="sep" x1="521.6" x2="521.6" y1="152" y2="200"/><line class="sep" x1="684.8" x2="684.8" y1="152" y2="200"/>
|
|
35
|
+
<rect class="chip" x="150.8" y="161" width="71" height="30" rx="6"/>
|
|
36
|
+
<text class="val" x="158.8" y="183">5.3 h</text>
|
|
37
|
+
|
|
38
|
+
<text class="rl" x="32" y="228">With APK<tspan class="rn"> · each role ran on a model that fits the task and the plan</tspan></text>
|
|
39
|
+
<rect fill="url(#apk-limits-hatch)" x="32" y="240" width="816" height="48" rx="8"/>
|
|
40
|
+
<rect class="after" x="32" y="240" width="510.0" height="48" rx="8"/>
|
|
41
|
+
<line class="sep" x1="195.2" x2="195.2" y1="240" y2="288"/><line class="sep" x1="358.4" x2="358.4" y1="240" y2="288"/><line class="sep" x1="521.6" x2="521.6" y1="240" y2="288"/><line class="sep" x1="684.8" x2="684.8" y1="240" y2="288"/>
|
|
42
|
+
<rect class="chip" x="552.0" y="249" width="60" height="30" rx="6"/>
|
|
43
|
+
<text class="val" x="560.0" y="271">25 h</text>
|
|
44
|
+
</svg>
|