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.
Files changed (60) hide show
  1. package/AGENT_INSTALL.md +126 -42
  2. package/CHANGELOG.md +93 -3
  3. package/README.md +21 -53
  4. package/bin/agent-policy.mjs +10 -10
  5. package/docs/README.md +46 -0
  6. package/docs/assets/configurator.png +0 -0
  7. package/docs/assets/subagent-limits.svg +44 -0
  8. package/docs/design/2026-11-01-documentation-structure.md +58 -0
  9. package/docs/guide/commands.md +375 -0
  10. package/docs/guide/configurator.md +163 -0
  11. package/docs/guide/getting-started.md +119 -0
  12. package/docs/guide/preferences.md +168 -0
  13. package/docs/guide/privacy.md +76 -0
  14. package/docs/guide/updates-and-removal.md +188 -0
  15. package/docs/maintainers/architecture.md +71 -0
  16. package/docs/maintainers/development.md +93 -0
  17. package/docs/maintainers/model-review.md +101 -0
  18. package/docs/maintainers/release.md +114 -0
  19. package/docs/maintainers/verification.md +95 -0
  20. package/docs/maintainers/website.md +112 -0
  21. package/docs/reference/assistants.md +165 -0
  22. package/docs/reference/model-catalog.md +194 -0
  23. package/docs/reference/ownership.md +177 -0
  24. package/docs/reference/presets.md +128 -0
  25. package/docs/reference/roles.md +157 -0
  26. package/docs/research/2026-11-01-model-review.md +341 -0
  27. package/docs/research/limits-evidence.md +28 -0
  28. package/models/README.md +2 -6
  29. package/models/catalog.json +57 -26
  30. package/package.json +7 -3
  31. package/policies/balanced.json +3 -3
  32. package/policies/fast.json +3 -13
  33. package/policies/quality.json +4 -14
  34. package/schema/policy.schema.json +2 -2
  35. package/site/index.html +108 -60
  36. package/src/detect.mjs +61 -13
  37. package/src/explicit.mjs +4 -4
  38. package/src/inspect.mjs +14 -13
  39. package/src/install.mjs +19 -13
  40. package/src/native.mjs +8 -8
  41. package/src/output.mjs +5 -5
  42. package/src/policy.mjs +2 -2
  43. package/src/release.mjs +1 -1
  44. package/src/setup.mjs +1 -1
  45. package/src/share.mjs +5 -5
  46. package/docs/architecture.md +0 -17
  47. package/docs/compatibility.md +0 -23
  48. package/docs/configuration-page.md +0 -44
  49. package/docs/deployment.md +0 -31
  50. package/docs/development.md +0 -21
  51. package/docs/installation.md +0 -23
  52. package/docs/model-catalog.md +0 -102
  53. package/docs/model-updates.md +0 -22
  54. package/docs/npm-release.md +0 -27
  55. package/docs/policy.md +0 -16
  56. package/docs/privacy.md +0 -9
  57. package/docs/recovery.md +0 -13
  58. package/docs/releases.md +0 -40
  59. package/docs/use-cases.md +0 -25
  60. package/docs/verification.md +0 -45
@@ -0,0 +1,128 @@
1
+ # Presets
2
+
3
+ This document lists the three presets of release 0.4.0: Light, Standard and Top-tier. It gives the model and effort that each preset selects for each role and AI assistant, the top models switch, the parallel limits and the design principles. It is for everyone who chooses a preset or wants to know why a preset has its values.
4
+
5
+ A preset is a named set of preferences that the release supplies. The data is in `policies/fast.json` (Light), `policies/balanced.json` (Standard) and `policies/quality.json` (Top-tier). The CLI uses the ids `fast`, `balanced` and `quality`. The page and this document use the labels. For the roles, see [Roles](roles.md). For model IDs, efforts and access requirements, see [Model catalog](model-catalog.md). The detailed evidence is in the [model review of 2026-11-01](../research/2026-11-01-model-review.md).
6
+
7
+ ## Summary
8
+
9
+ | Preset | CLI id | Description | Parallel limit per assistant |
10
+ |---|---|---|---|
11
+ | Light | `fast` | Light models for every role. Limits last longest. | 2 |
12
+ | Standard | `balanced` | Stronger models for code, review, tests and docs. Fits most plans. | 3 |
13
+ | Top-tier | `quality` | High-end models for most roles. Uses limits fastest. | 2 |
14
+
15
+ Standard is the default preset. `setup --release` without `--preset` applies it. For the commands, see [Commands](../guide/commands.md).
16
+
17
+ ## Design principles
18
+
19
+ The presets were reviewed on 2026-11-01. They are starting recommendations, not a quality ranking.
20
+
21
+ - Subagent usage counts against the same plan limits as the main session. Each parallel session adds to that usage. The presets therefore differ in how much of the plan the subagents can use.
22
+ - No comparative task benchmark was run for the presets. Configuration tests check settings, not model quality.
23
+ - Vendors' effort labels and subscription usage are not directly comparable. One role can therefore get different effort levels in different assistants.
24
+ - Presets pin at most `high`. The only exception is the Claude top choice at `xhigh`. Higher effort gives quickly diminishing returns. Higher levels stay available in Custom.
25
+ - No preset bans a model. A model that a preset does not select stays available in Custom. Personal avoid lists stay available in preferences and CLI input.
26
+ - Each table cell is `model · effort`. A cell without an effort means that the assistant has no per-role effort setting. Gemini and Grok cells have no effort for this reason. See [Roles](roles.md#how-effort-applies).
27
+
28
+ ### Light
29
+
30
+ | Role | ChatGPT | Claude | Kimi | Gemini | Grok |
31
+ |---|---|---|---|---|---|
32
+ | Coder | Luna · high | Haiku 5.5 · medium | K2.8 Preview · low | Flash | Grok Build 0.1 |
33
+ | Reviewer | Luna · high | Haiku 5.5 · high | K2.8 Preview · low | Flash | Grok Build 0.1 |
34
+ | Code explorer | Luna · low | Haiku 5.5 · low | K2.8 Preview · low | Flash Lite | Grok Build 0.1 |
35
+ | Test writer | Luna · high | Haiku 5.5 · high | K2.8 Preview · low | Flash | Grok Build 0.1 |
36
+ | Docs writer | Luna · low | Haiku 5.5 · low | K2.8 Preview · low | Flash Lite | Grok Build 0.1 |
37
+ | Task runner | Luna · low | Haiku 5.5 · low | K2.8 Preview · low | Flash Lite | Grok Build 0.1 |
38
+
39
+ Light uses light models for every role, so plan limits last longest. It suits entry plans and many parallel sessions.
40
+
41
+ - ChatGPT runs GPT-6 Luna at high for code, review and tests. OpenAI suggests high as the starting level for Luna. Luna is the cheapest Codex model at any level.
42
+ - Claude gives reviews and test creation more reasoning than the Coder. Checking edge cases is different from executing known steps.
43
+ - Kimi roles share one alias, and an alias has one effort. Light keeps that effort at low to save quota.
44
+ - Gemini uses Flash for code, review and tests, and Flash Lite for lighter work.
45
+ - Grok uses Grok Build 0.1, the fast coding model, for every role.
46
+
47
+ ### Standard
48
+
49
+ | Role | ChatGPT | Claude | Kimi | Gemini | Grok |
50
+ |---|---|---|---|---|---|
51
+ | Coder | Sol · medium | Sonnet 5.5 · medium | K3 256K · high | Pro | Grok 4.7 |
52
+ | Reviewer | Sol · high | Sonnet 5.5 · high | K3 256K · high | Pro | Grok 4.7 |
53
+ | Code explorer | Luna · high | Haiku 5.5 · medium | K2.8 Preview · low | Flash | Grok Build 0.1 |
54
+ | Test writer | Sol · high | Sonnet 5.5 · high | K3 256K · high | Pro | Grok 4.7 |
55
+ | Docs writer | Terra · medium | Sonnet 5.5 · medium | K3 256K · high | Flash | Grok 4.7 |
56
+ | Task runner | Luna · low | Haiku 5.5 · low | K2.8 Preview · low | Flash Lite | Grok Build 0.1 |
57
+
58
+ Standard uses stronger models for implementation, review, test creation and documentation. It uses light models for fact gathering and mechanical work.
59
+
60
+ - ChatGPT runs GPT-6.1 Sol for code, review and tests. Luna runs at high for exploration. GPT-6.1 Terra runs at medium for docs: OpenAI positions Terra for clear writing, at half of Sol's usage.
61
+ - Claude's Haiku 5.5 explorer uses medium, its native default.
62
+ - Kimi uses K3 256K for code, review, tests and docs. Its quota footprint is smaller than that of the full-context K3. Larger-context choices stay editable.
63
+ - Gemini uses Flash for exploration and docs.
64
+ - Grok adds Grok 4.7 for code, review, tests and docs.
65
+ - No Standard role uses GPT-6 Astra, Fable or K3.1 Pro.
66
+
67
+ ### Top-tier
68
+
69
+ | Role | ChatGPT | Claude | Kimi | Gemini | Grok |
70
+ |---|---|---|---|---|---|
71
+ | Coder | Sol · high | Opus 5.5 · high | K3 · high | Pro | Grok 4.7 |
72
+ | Reviewer | Sol · high | Opus 5.5 · high | K3 · high | Pro | Grok 4.7 |
73
+ | Code explorer | Sol · medium | Opus 5.5 · medium | K3 · high | Pro | Grok 4.7 |
74
+ | Test writer | Sol · high | Opus 5.5 · high | K3 · high | Pro | Grok 4.7 |
75
+ | Docs writer | Sol · medium | Opus 5.5 · medium | K3 · high | Pro | Grok 4.7 |
76
+ | Task runner | Sol · medium | Sonnet 5.5 · medium | K2.8 Preview · high | Flash | Grok Build 0.1 |
77
+
78
+ Top-tier uses GPT-6.1 Sol, Opus 5.5 and K3 at high effort for implementation, review and tests. It uses limits fastest. It suits top plans with few parallel sessions.
79
+
80
+ - Exploration and documentation use the same high-end model. In ChatGPT and Claude they run at medium. Read-only discovery and writing do not need the edge-case checking that high is for.
81
+ - In Claude, Kimi, Gemini and Grok, only the Task runner uses a lighter model. ChatGPT uses Sol for every role. Its Task runner runs at medium, the same as exploration and documentation.
82
+ - Kimi keeps one effort per shared alias. K2.8 Preview has no medium level, so the Kimi Task runner uses high.
83
+ - Gemini has one top tier, Pro. Gemini's Standard and Top-tier differ only in exploration, docs and the Task runner.
84
+ - Grok also uses Grok 4.7 for exploration. The Grok Task runner keeps Grok Build 0.1.
85
+
86
+ ## Top models switch
87
+
88
+ The top models switch is an option of Top-tier on the [configurator](../guide/configurator.md). It is not a separate preset. Each assistant has its own switch. The switch is off by default, because the top choices use limits much faster. Share links keep the switch state.
89
+
90
+ When the switch is on, the Coder, Reviewer and Test writer use the top choice of the assistant:
91
+
92
+ | Assistant | Top choice |
93
+ |---|---|
94
+ | ChatGPT | GPT-6 Astra · high |
95
+ | Claude | Opus 5.5 · xhigh |
96
+ | Kimi | K3.1 Pro · high |
97
+
98
+ Gemini and Grok have no top choice.
99
+
100
+ For Claude, the switch raises the Opus 5.5 effort instead of selecting Fable 5.1. Anthropic's own benchmarks put Opus 5.5 ahead of Fable 5.1 on every published coding benchmark, at 2.5 times lower price. Anthropic also suggests a higher Opus effort before Fable. Fable 5.1 stays available in Custom.
101
+
102
+ The default subagent setting of Claude caps the effort at high. The `xhigh` top choice therefore does not raise subagents that have no named role. See [Roles](roles.md#default-subagent-per-assistant).
103
+
104
+ ## Parallel limits
105
+
106
+ The parallel limit is the maximum number of subagents that run at the same time in one session. The defaults are Light 2, Standard 3 and Top-tier 2 for each assistant.
107
+
108
+ - Light keeps short work bounded.
109
+ - Standard lets three independent responsibilities overlap.
110
+ - Top-tier limits long work on heavier models that runs at the same time.
111
+
112
+ These values are product defaults, not benchmark results. A limit does not start tasks and does not measure quality. Each assistant can override its limit on the page or with `--TOOL-max-concurrent`. Some assistants enforce the limit natively. For others it is guidance only. See [AI assistants](assistants.md#native-limits).
113
+
114
+ ## Reasons by vendor
115
+
116
+ These are short reasons. The sources and the detailed comparisons are in the [model review of 2026-11-01](../research/2026-11-01-model-review.md).
117
+
118
+ - **OpenAI (ChatGPT):** OpenAI positions Astra for demanding work, Sol for a balance of capability and usage, Terra for fast, clear writing and Luna for focused, efficient work. In Codex credits per token, Astra costs 5 times Sol, Terra costs half of Sol and Luna costs a tenth of Terra. OpenAI's subagent guide suggests Sol for demanding agents, Luna for lighter subagent work, high for Luna, and names reviewer or security-focused agents as examples for high. The reviewer example of the same guide uses Sol at medium.
119
+ - **Anthropic (Claude):** Anthropic suggests Sonnet for most coding, Opus for complex architectural work and Haiku for simple subagent tasks. Anthropic suggests Fable only when Opus 5.5 at a higher effort still falls short. Anthropic describes high as the level for work where verification matters and xhigh as deeper reasoning at higher token spend. Anthropic reports that Sonnet 5.5 scored lower at max than at xhigh, because it started review subagents more often.
120
+ - **Moonshot (Kimi):** Kimi describes K2.8 Preview as efficient thinking and K3 256K as a smaller quota footprint than K3. Moonshot recommends K3 256K for routine feature work and K3 for large-codebase analysis and multi-file refactoring. K3.1 Pro Highspeed has the same capabilities as K3.1 Pro at a quota premium, so no preset uses it.
121
+ - **Google (Gemini):** The presets use only the native role tiers of Antigravity. The tiers do not fix the underlying model, and there is no per-role effort.
122
+ - **xAI (Grok):** Grok Build 0.1 is xAI's fast coding model and serves light work. Grok 4.7 is the flagship and serves code, review, tests and docs. Grok 4.6 and 4.5 stay available in Custom.
123
+
124
+ Account access to each model varies by plan. A preset does not grant access. For plan requirements, see [Model catalog](model-catalog.md#access-requirements).
125
+
126
+ ## What a preset does not freeze
127
+
128
+ A preset fixes the model IDs and effort levels that it writes. It does not fix what a provider alias or tier resolves to, and it does not keep a retired model available. For release selection and updates, see [Updates and removal](../guide/updates-and-removal.md). For the review procedure for the next release, see [Model review procedure](../maintainers/model-review.md).
@@ -0,0 +1,157 @@
1
+ # Roles
2
+
3
+ This document describes the six subagent roles of APK: what each role does, its prompt, its permissions and the files that APK writes for it. It also describes the default subagent of each AI assistant and how effort applies. It is for everyone who selects roles or wants to know what a configured subagent receives.
4
+
5
+ A role is a named subagent definition, for example `apk-reviewer`. The main agent decides whether to delegate. A role file does not start a subagent and does not require delegation. Main models, permissions and disabled agent features stay as they are. The roles are defined in `src/roles.mjs`. The page and the native files use the same definitions.
6
+
7
+ ## The six roles
8
+
9
+ | Role | Native name | Kind | Assignment in the routing instructions |
10
+ |---|---|---|---|
11
+ | Coder | `apk-worker` | code | scoped implementation and fixes |
12
+ | Reviewer | `apk-reviewer` | code | read-only correctness, security and regression review |
13
+ | Code explorer | `apk-explorer` | light | read-only code and documentation discovery |
14
+ | Test writer | `apk-tester` | code | test creation and targeted execution |
15
+ | Docs writer | `apk-writer` | light | assigned documentation, examples and release notes |
16
+ | Task runner | `apk-routine` | light | explicit commands and mechanical edits |
17
+
18
+ The kind selects the default choice in preferences. Code roles use the `code` model and effort. Light roles use the `light` model and effort. A role-specific entry in `roles` overrides the default. See [Preferences](../guide/preferences.md).
19
+
20
+ The native names are fixed. The CLI uses the ids `worker`, `reviewer`, `explorer`, `tester`, `writer` and `routine`.
21
+
22
+ ## Role selection
23
+
24
+ By default, APK configures all six roles. The optional `selectedRoles` preference (or `--roles` on the command line) selects a subset. APK then writes role files and routing text only for the selected roles. A Kimi alias that only unselected roles use needs no provisioning and gets no effort pin.
25
+
26
+ ## Descriptions and prompts
27
+
28
+ The description is the short text that the native client shows. The prompt is the body of the role file. Every prompt ends with the same sentence: "Do not create child agents; return any need for further delegation to the parent."
29
+
30
+ ### Coder
31
+
32
+ Description: "Implements scoped changes, preserves peers' edits, and verifies the result."
33
+
34
+ Prompt: "Implement the assigned change or fix within the assigned files. You share the workspace with other agents: preserve their edits. Verify the result and report changes, checks, and remaining limitations."
35
+
36
+ ### Reviewer
37
+
38
+ Description: "Reviews correctness, security and regressions without edits; reports actionable evidence."
39
+
40
+ Prompt: "Review the assigned change without editing files. Find actionable correctness, security, and regression issues. Report each finding with file and line evidence and explain its impact; distinguish confirmed issues from uncertainty."
41
+
42
+ ### Code explorer
43
+
44
+ Description: "Maps code and documentation, cites sources, and separates facts from uncertainty."
45
+
46
+ Prompt: "Explore the assigned code and documentation without editing files. Return a concise map or factual answer with source paths or citations. Distinguish verified facts from assumptions and unknowns."
47
+
48
+ ### Test writer
49
+
50
+ Description: "Writes behavior and edge-case tests, reproduces issues, and runs targeted checks."
51
+
52
+ Prompt: "Own the assigned tests and targeted execution. Reproduce the issue or establish a baseline, then test observable behavior and edge cases. Never weaken checks to make them pass. Do not edit application code unless explicitly assigned. Preserve peers' edits and report results and limitations."
53
+
54
+ ### Docs writer
55
+
56
+ Description: "Updates assigned docs and examples, verifies claims, and keeps terminology consistent."
57
+
58
+ Prompt: "Update only the assigned documentation, examples, or release notes. Verify claims against code or cited sources and use consistent terminology. Do not edit application code. Preserve peers' edits and report changes and unknowns."
59
+
60
+ ### Task runner
61
+
62
+ Description: "Runs prescribed commands and mechanical edits; returns ambiguous decisions to the parent."
63
+
64
+ Prompt: "Execute only the prescribed commands or clearly specified mechanical edits. Preserve other agents' work and report the outcome. Do not make ambiguous design or behavior decisions; return those decisions to the parent."
65
+
66
+ ## Permissions
67
+
68
+ The Reviewer and the Code explorer are read-only roles. Their prompts tell them not to edit files. Three assistants also restrict them natively:
69
+
70
+ | Assistant | Native read-only setting for Reviewer and Code explorer |
71
+ |---|---|
72
+ | ChatGPT | None. The prompt is the only restriction. |
73
+ | Claude | `tools: Read, Grep, Glob` |
74
+ | Kimi | `tools: [Read, Grep, Glob]` |
75
+ | Gemini | None. The prompt is the only restriction. |
76
+ | Grok | `permission_mode: plan` |
77
+
78
+ The other four roles get no tool restriction. They use the permissions of the native client.
79
+
80
+ ## Role file contents
81
+
82
+ For the file paths, see [AI assistants](assistants.md#files-written). Each file has these fields:
83
+
84
+ | Assistant | Format | Fields |
85
+ |---|---|---|
86
+ | ChatGPT | TOML | `name`, `description`, `model`, `model_reasoning_effort` (only when the effort is pinned), `developer_instructions` (the prompt) |
87
+ | Claude | Markdown with frontmatter | `name`, `description`, `model`, `effort` (only when pinned), `tools` (read-only roles); the body is the prompt |
88
+ | Kimi | Markdown with frontmatter | `name`, `description`, `tools` (read-only roles); the body is the prompt and a routing note |
89
+ | Gemini | Markdown with frontmatter | `name`, `description`, `model` (the tier), `subagent: true`; the body is the prompt |
90
+ | Grok | Markdown with frontmatter | `name`, `description`, `permission_mode: plan` (read-only roles); the body is the prompt |
91
+
92
+ - Kimi frontmatter does not select a model. The routing note in the body names the pool alias and the requested effort. The parent selects the alias when it spawns the subagent.
93
+ - Grok takes the model of each role from `[subagents.models]` in `config.toml`, not from the role file.
94
+
95
+ ## Instruction block
96
+
97
+ APK adds one block to the global instruction file of each assistant. The block starts with `<!-- BEGIN agent-policy-kit -->` and ends with `<!-- END agent-policy-kit -->`. It contains these sentences:
98
+
99
+ 1. "These preferences apply only if you choose to delegate to subagents. They do not require delegation or change how you handle work directly."
100
+ 2. A routing sentence that maps each selected role to its assignment, for example "When delegating, use apk-worker for scoped implementation and fixes, apk-reviewer for …".
101
+ 3. The parallel limit: "When delegating, run at most N subagents concurrently in this session." It also asks for one concrete result and explicit file ownership for each agent, and says that child agents return further delegation to the parent.
102
+ 4. Text for the assistant:
103
+ - ChatGPT and Claude: use the named role definitions for model and effort, which settings can override them, and that an omitted role effort uses the native default.
104
+ - Kimi: the pool alias and effort for each role, that roles that share an alias share its effort, and that the concurrency limit is guidance.
105
+ - Gemini: the tier for each role, and that per-role effort and a hard concurrency cap are not supported.
106
+ - Grok: use the named role definitions for model selection, and that subagents use the main session effort.
107
+ 5. If the avoid list is not empty: "Avoid these models when delegating: …. This is routing guidance."
108
+
109
+ ## Default subagent per assistant
110
+
111
+ A subagent can start without a named role. Most assistants then use a native default. APK sets that default from the first selected role, in the order of the table in [The six roles](#the-six-roles). When the Coder is selected, it is the Coder.
112
+
113
+ | Assistant | Model setting | Effort setting |
114
+ |---|---|---|
115
+ | ChatGPT | `agents.default_subagent_model` | `agents.default_subagent_reasoning_effort`, the same effort, when pinned |
116
+ | Claude | `CLAUDE_CODE_SUBAGENT_MODEL` | `CLAUDE_CODE_SUBAGENT_EFFORT`, when pinned, capped at `high` |
117
+ | Kimi | `secondary_model.default_model` (the alias) | The per-alias effort of that alias, when pinned |
118
+ | Gemini | Not set | Not set |
119
+ | Grok | `subagents.models.general-purpose` | Not set. Subagents use the main session effort. |
120
+
121
+ - **Claude cap:** a role effort of `xhigh` or `max` becomes `high` for the default subagent. The Claude top choice at `xhigh` therefore does not raise subagents without a named role. Claude Code 2.1.316 or later reads `CLAUDE_CODE_SUBAGENT_EFFORT`. Earlier versions ignore it, and those subagents keep the main session effort.
122
+ - **Gemini:** APK writes no configuration file for Antigravity, so subagents without a role follow native Antigravity behavior.
123
+ - **Grok:** without the `general-purpose` entry, a subagent without a named type inherits the parent model.
124
+
125
+ ## How effort applies
126
+
127
+ Effort is the reasoning level that a model uses. An unpinned effort (`null`, or `:native` on the command line) means that APK writes no effort field. The native client then uses its default. APK never changes the effort of the main agent to suit a subagent.
128
+
129
+ | Assistant | Where the effort goes | Notes |
130
+ |---|---|---|
131
+ | ChatGPT | `model_reasoning_effort` in the role file | Levels follow the native Codex catalog. |
132
+ | Claude | `effort` in the role file | `CLAUDE_CODE_EFFORT_LEVEL` overrides the `effort` field of subagents. Aliases and the resolved provider model can clamp or ignore a level. |
133
+ | Kimi | `models.<alias>.overrides.default_effort` | One effort for each alias. See below. |
134
+ | Gemini | None | `--effort` and `/effort` apply to the whole session. |
135
+ | Grok | None | Grok Build resolves subagent effort from a spawn override, a role default, a persona default and then the parent session. APK writes only a model, so subagents use the main session effort. |
136
+
137
+ A known model accepts only the levels in the [model catalog](model-catalog.md). The page offers only those levels.
138
+
139
+ ### Kimi alias effort
140
+
141
+ Kimi sets effort for each alias, not for each role. An alias is a model entry in the Kimi `config.toml`. These rules apply:
142
+
143
+ - Roles that use the same alias share its effort. A pin for an alias also applies to the unpinned roles that use the same alias.
144
+ - Selected roles that use the same alias cannot request different explicit efforts. APK refuses such input before it plans a change: a preferences file with `INVALID_POLICY`, command-line flags with `INVALID_EXPLICIT_CONFIG` and a `--config` value with `INVALID_CONFIG`. One explicit effort and `null` can share an alias.
145
+ - Setup can resolve a missing catalog alias to an existing alias with the same upstream model. If two roles then resolve to one alias with different pinned efforts, setup returns `kimi-resolved-effort-conflict`.
146
+ - The pinned level must be in the `support_efforts` of the alias, including its `overrides`. If not, setup returns `kimi-supported-effort-required`.
147
+ - If thinking is off (`thinking.enabled = false`) and any effort is pinned, setup returns `kimi-thinking-disabled`.
148
+ - If some selected aliases have a pinned effort, others are unpinned, and `secondary_model.default_effort` is set, setup returns `kimi-mixed-native-default-effort`.
149
+ - If a pinned alias is also the main model (`default_model`) and the pin changes its default effort, setup returns `kimi-main-effort-conflict`. This refusal does not apply when `thinking.effort` sets an explicit main effort that the alias supports. Use a separate native alias for subagents, or set the main effort deliberately.
150
+
151
+ For the other Kimi prerequisites, see [AI assistants](assistants.md#kimi-kimi-code).
152
+
153
+ ## Related documents
154
+
155
+ - [Presets](presets.md): the model and effort that each preset selects for each role.
156
+ - [Ownership and state](ownership.md): how APK records and removes role files.
157
+ - [Architecture](../maintainers/architecture.md): how the code generates the native files.