one-code-extension 0.4.0 → 0.5.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 (419) hide show
  1. package/README.md +219 -219
  2. package/agents/general-purpose.md +2 -2
  3. package/docs/guide/README.md +2 -1
  4. package/docs/guide/bring-your-claude-code-setup.md +60 -9
  5. package/docs/guide/configuration.md +48 -14
  6. package/docs/guide/differences-from-claude-code.md +32 -23
  7. package/docs/guide/doctor.md +20 -13
  8. package/docs/guide/hooks.md +18 -3
  9. package/docs/guide/installation.md +27 -4
  10. package/docs/guide/permissions-modes-and-auto-mode.md +225 -49
  11. package/docs/guide/providers-and-models.md +137 -54
  12. package/docs/guide/reference.md +27 -15
  13. package/docs/guide/sessions-and-context.md +69 -16
  14. package/docs/guide/skills-plugins-and-mcp.md +57 -20
  15. package/docs/guide/subagents-and-workflows.md +95 -29
  16. package/docs/guide/tasks-and-background-work.md +101 -26
  17. package/docs/guide/terminal-interface.md +24 -12
  18. package/docs/guide/tools.md +46 -5
  19. package/docs/guide/troubleshooting.md +13 -9
  20. package/docs/guide/windows.md +66 -34
  21. package/extensions/artifacts/gallery.ts +227 -0
  22. package/extensions/artifacts/index.ts +288 -0
  23. package/extensions/artifacts/store.ts +570 -0
  24. package/extensions/artifacts/viewer.ts +199 -0
  25. package/extensions/ask-user/description.ts +67 -0
  26. package/extensions/ask-user/dialogs.ts +80 -0
  27. package/extensions/ask-user/index.ts +37 -33
  28. package/extensions/ask-user/questions.ts +32 -7
  29. package/extensions/ask-user/widget.ts +45 -25
  30. package/extensions/auto-mode/actions.ts +6 -0
  31. package/extensions/auto-mode/cache.ts +88 -0
  32. package/extensions/auto-mode/classifier-prompt.ts +5 -4
  33. package/extensions/auto-mode/classifier.ts +290 -65
  34. package/extensions/auto-mode/config.ts +72 -20
  35. package/extensions/auto-mode/decision-log.ts +2 -0
  36. package/extensions/auto-mode/defaults.ts +1 -1
  37. package/extensions/auto-mode/denials.ts +123 -0
  38. package/extensions/auto-mode/git-checkout-programs.ts +187 -0
  39. package/extensions/auto-mode/git-status-meta.ts +159 -0
  40. package/extensions/auto-mode/history.ts +189 -0
  41. package/extensions/auto-mode/instructions.ts +58 -52
  42. package/extensions/auto-mode/model-select.ts +159 -134
  43. package/extensions/auto-mode/paths.ts +57 -5
  44. package/extensions/auto-mode/pause.ts +57 -2
  45. package/extensions/auto-mode/prompt.ts +37 -21
  46. package/extensions/auto-mode/read-only-options.ts +724 -0
  47. package/extensions/auto-mode/resolved-paths-meta.ts +133 -0
  48. package/extensions/auto-mode/rules.ts +18 -1
  49. package/extensions/auto-mode/safety-floor.ts +361 -18
  50. package/extensions/auto-mode/setup-run.ts +20 -14
  51. package/extensions/auto-mode/shell-analysis.ts +764 -490
  52. package/extensions/auto-mode/shell-parse.ts +885 -0
  53. package/extensions/auto-mode/system-note.ts +33 -0
  54. package/extensions/auto-mode/transcript.ts +80 -51
  55. package/extensions/background/cron.ts +515 -0
  56. package/extensions/background/index.ts +514 -236
  57. package/extensions/background/loop-fire.ts +136 -0
  58. package/extensions/background/loop-preamble.ts +59 -0
  59. package/extensions/background/loop-skill.ts +163 -0
  60. package/extensions/background/monitor-batch.ts +53 -0
  61. package/extensions/background/noop-fold.ts +128 -0
  62. package/extensions/background/switch-guard.ts +52 -0
  63. package/extensions/background/wakeup.ts +159 -55
  64. package/extensions/bash/background.ts +53 -17
  65. package/extensions/bash/child.ts +7 -0
  66. package/extensions/bash/description.ts +188 -0
  67. package/extensions/bash/guards.ts +15 -67
  68. package/extensions/bash/index.ts +88 -35
  69. package/extensions/branding/compaction-keep.ts +63 -0
  70. package/extensions/branding/declined.ts +22 -0
  71. package/extensions/branding/index.ts +133 -9
  72. package/extensions/branding/prompt-editor.ts +53 -6
  73. package/extensions/branding/queued-edit.ts +31 -0
  74. package/extensions/branding/replaced-builtins.ts +68 -0
  75. package/extensions/branding/startup.ts +33 -71
  76. package/extensions/btw/index.ts +229 -71
  77. package/extensions/btw/panel.ts +228 -100
  78. package/extensions/btw/prompt.ts +41 -4
  79. package/extensions/claude-compat/index.ts +7 -11
  80. package/extensions/claude-context/index.ts +446 -58
  81. package/extensions/compaction/cut.ts +157 -0
  82. package/extensions/compaction/index.ts +216 -75
  83. package/extensions/compaction/kept-thinking.ts +62 -0
  84. package/extensions/compaction/prompt.ts +15 -12
  85. package/extensions/context-budget/index.ts +24 -5
  86. package/extensions/context-management/index.ts +25 -0
  87. package/extensions/doctor/build.ts +59 -8
  88. package/extensions/doctor/builtins.ts +84 -0
  89. package/extensions/doctor/cli.ts +7 -1
  90. package/extensions/doctor/compat.ts +88 -23
  91. package/extensions/doctor/dependencies.ts +41 -5
  92. package/extensions/doctor/fix-prompt.ts +9 -2
  93. package/extensions/doctor/index.ts +102 -58
  94. package/extensions/doctor/models.ts +102 -63
  95. package/extensions/doctor/presets.ts +42 -27
  96. package/extensions/doctor/report.ts +19 -2
  97. package/extensions/doctor/viewer.ts +49 -27
  98. package/extensions/effort/index.ts +72 -19
  99. package/extensions/effort/settings.ts +21 -0
  100. package/extensions/effort/slider.ts +24 -20
  101. package/extensions/exit/index.ts +32 -1
  102. package/extensions/file-tracker/index.ts +337 -26
  103. package/extensions/file-tracker/replay.ts +96 -10
  104. package/extensions/file-tracker/restore.ts +63 -0
  105. package/extensions/file-tracker/results.ts +66 -0
  106. package/extensions/file-tracker/shell-reads.ts +211 -0
  107. package/extensions/file-tracker/tracker.ts +32 -15
  108. package/extensions/footer/footer-line.ts +45 -24
  109. package/extensions/footer/index.ts +47 -2
  110. package/extensions/footer/pr.ts +34 -5
  111. package/extensions/hooks/compaction.ts +7 -0
  112. package/extensions/hooks/executor.ts +32 -30
  113. package/extensions/hooks/index.ts +198 -31
  114. package/extensions/hooks/matcher.ts +3 -0
  115. package/extensions/hooks/protocol.ts +41 -3
  116. package/extensions/hooks/settings.ts +50 -19
  117. package/extensions/hooks/subagent-bridge.ts +2 -0
  118. package/extensions/hooks/trust.ts +13 -5
  119. package/extensions/idle-compact/index.ts +119 -0
  120. package/extensions/idle-compact/policy.ts +143 -0
  121. package/extensions/init/index.ts +11 -10
  122. package/extensions/init/prompt.ts +25 -32
  123. package/extensions/interrupted/index.ts +13 -1
  124. package/extensions/kept-thinking/index.ts +27 -0
  125. package/extensions/lib/agent-cron.ts +130 -0
  126. package/extensions/lib/agent-loader.ts +15 -1
  127. package/extensions/lib/agent-view.ts +85 -0
  128. package/extensions/lib/anthropic-payload.ts +82 -1
  129. package/extensions/lib/anthropic-server-call.ts +230 -0
  130. package/extensions/lib/anthropic-server-tools.ts +485 -0
  131. package/extensions/lib/app-launch.mjs +94 -0
  132. package/extensions/lib/argument-hints.ts +190 -0
  133. package/extensions/lib/atomic-write.ts +6 -2
  134. package/extensions/lib/auto-memory.ts +75 -0
  135. package/extensions/lib/bash-parser.ts +84 -0
  136. package/extensions/lib/btw-fork.ts +93 -0
  137. package/extensions/lib/child-extensions.ts +42 -0
  138. package/extensions/lib/child-writes.ts +45 -0
  139. package/extensions/lib/claude-context.ts +515 -100
  140. package/extensions/lib/claude-external-includes.ts +68 -0
  141. package/extensions/lib/claude-id.ts +22 -0
  142. package/extensions/lib/claude-rules.ts +323 -0
  143. package/extensions/lib/claude-settings.ts +76 -4
  144. package/extensions/lib/compaction-boundary.ts +36 -0
  145. package/extensions/lib/compaction-keep.mjs +83 -0
  146. package/extensions/lib/config-mode.ts +112 -0
  147. package/extensions/lib/consent-dialogs.ts +63 -0
  148. package/extensions/lib/consent-preview.ts +5 -1
  149. package/extensions/lib/consent-stores.ts +48 -0
  150. package/extensions/lib/context-facts.ts +78 -0
  151. package/extensions/lib/context-stack.ts +81 -0
  152. package/extensions/lib/deferred.ts +219 -25
  153. package/extensions/lib/dock-rows.ts +60 -0
  154. package/extensions/lib/empty-tool-result.ts +27 -0
  155. package/extensions/lib/environment-block.ts +76 -0
  156. package/extensions/lib/fetch-timeout.ts +24 -6
  157. package/extensions/{system-prompt → lib}/git-status.ts +51 -13
  158. package/extensions/lib/git.ts +75 -13
  159. package/extensions/lib/grammars/LICENSE-tree-sitter-bash +21 -0
  160. package/extensions/lib/grammars/README.md +2 -0
  161. package/extensions/lib/grammars/tree-sitter-bash.wasm +0 -0
  162. package/extensions/lib/guide-docs.ts +45 -0
  163. package/extensions/lib/headless-output.ts +46 -0
  164. package/extensions/lib/hook-gate.ts +7 -7
  165. package/extensions/lib/interrupt.ts +20 -4
  166. package/extensions/lib/key-input.ts +455 -0
  167. package/extensions/lib/keys.ts +14 -1
  168. package/extensions/lib/local-command.ts +47 -13
  169. package/extensions/lib/mcp-overrides.ts +1 -1
  170. package/extensions/lib/mcp-share.ts +46 -0
  171. package/extensions/lib/memory-content.ts +146 -0
  172. package/extensions/lib/memory-index.ts +18 -0
  173. package/extensions/lib/memory.ts +134 -123
  174. package/extensions/lib/model-catalog/huggingface.json +174 -0
  175. package/extensions/lib/model-catalog/models-dev.json +18297 -0
  176. package/extensions/lib/model-catalog/openrouter.json +5252 -0
  177. package/extensions/lib/model-catalog-data.ts +513 -0
  178. package/extensions/lib/model-catalog.ts +462 -0
  179. package/extensions/lib/model-choice-warnings.ts +137 -0
  180. package/extensions/lib/model-pairings.ts +152 -0
  181. package/extensions/{auto-mode → lib}/model-picker.ts +26 -43
  182. package/extensions/lib/model-policy.ts +112 -15
  183. package/extensions/lib/model-tier.ts +283 -355
  184. package/extensions/lib/model-unusable.ts +1 -1
  185. package/extensions/lib/newer-model.ts +100 -0
  186. package/extensions/lib/notices.ts +87 -0
  187. package/extensions/lib/notifications.ts +308 -64
  188. package/extensions/lib/one-code-settings.ts +74 -8
  189. package/extensions/lib/open-browser.ts +63 -0
  190. package/extensions/lib/openrouter-generation.ts +94 -0
  191. package/extensions/lib/operation-deadline.ts +30 -0
  192. package/extensions/lib/original-command.ts +4 -4
  193. package/extensions/lib/package-version.ts +1 -1
  194. package/extensions/lib/panel-focus.ts +134 -0
  195. package/extensions/lib/paths.ts +17 -2
  196. package/extensions/lib/permission-gate.ts +72 -6
  197. package/extensions/lib/persisted-output.ts +60 -8
  198. package/extensions/lib/pi-ai-estimate.ts +19 -3
  199. package/extensions/lib/pi-version.ts +21 -2
  200. package/extensions/lib/plan-mode-channels.ts +20 -5
  201. package/extensions/lib/plugins.ts +26 -17
  202. package/extensions/lib/powershell-parse-script.ts +208 -0
  203. package/extensions/lib/powershell-parser.ts +344 -0
  204. package/extensions/lib/process-tree.ts +131 -8
  205. package/extensions/lib/prompt-options.ts +82 -0
  206. package/extensions/lib/queued-delivery.ts +44 -0
  207. package/extensions/lib/reminders.ts +364 -58
  208. package/extensions/lib/replaced-builtins.mjs +199 -0
  209. package/extensions/lib/replay-call.ts +70 -0
  210. package/extensions/lib/request-replay.ts +439 -0
  211. package/extensions/lib/scratchpad.ts +81 -14
  212. package/extensions/lib/send-now-channel.ts +7 -0
  213. package/extensions/lib/session-model-tier.ts +51 -0
  214. package/extensions/lib/session-work.ts +64 -0
  215. package/extensions/lib/settings-channels.ts +4 -4
  216. package/extensions/lib/shell-exit-semantics.ts +170 -0
  217. package/extensions/lib/shell-quote.ts +11 -0
  218. package/extensions/lib/shell-result.ts +70 -0
  219. package/extensions/lib/shell-spawn.ts +70 -6
  220. package/extensions/lib/shell-tool.ts +75 -25
  221. package/extensions/lib/side-call-cache.ts +124 -0
  222. package/extensions/lib/side-call-run.ts +96 -0
  223. package/extensions/lib/side-call-usage.ts +38 -0
  224. package/extensions/lib/side-call.ts +13 -1
  225. package/extensions/lib/single-flight.ts +18 -0
  226. package/extensions/lib/skill-body.ts +42 -0
  227. package/extensions/lib/skill-scan.ts +63 -24
  228. package/extensions/lib/spill-file.ts +140 -0
  229. package/extensions/lib/subagent-handback.ts +113 -0
  230. package/extensions/lib/system-role.ts +156 -0
  231. package/extensions/lib/terminal-text.ts +114 -0
  232. package/extensions/lib/text-width.ts +47 -16
  233. package/extensions/lib/timer-ops.ts +20 -0
  234. package/extensions/lib/tool-additions.ts +149 -0
  235. package/extensions/lib/tool-call-corruption.ts +134 -0
  236. package/extensions/lib/tool-path.ts +66 -0
  237. package/extensions/lib/tool-variants.ts +69 -0
  238. package/extensions/lib/tui-render.ts +255 -27
  239. package/extensions/lib/turn-budget-layout.ts +143 -0
  240. package/extensions/lib/update-check.mjs +15 -2
  241. package/extensions/lib/usage-bus.ts +1 -1
  242. package/extensions/lib/user-denial.ts +38 -0
  243. package/extensions/lib/workspace-channel.ts +16 -0
  244. package/extensions/lib/worktree-channel.ts +31 -3
  245. package/extensions/lib/worktree-isolation.ts +40 -10
  246. package/extensions/lsp/client.ts +8 -9
  247. package/extensions/lsp/index.ts +70 -4
  248. package/extensions/lsp/keep-alive.ts +1 -1
  249. package/extensions/lsp/trust.ts +119 -0
  250. package/extensions/lsp/watcher.ts +1 -1
  251. package/extensions/mcp/announce.ts +87 -5
  252. package/extensions/mcp/client.ts +161 -48
  253. package/extensions/mcp/config.ts +132 -8
  254. package/extensions/mcp/discovery.ts +19 -0
  255. package/extensions/mcp/index.ts +209 -71
  256. package/extensions/mcp/oauth/browser.ts +38 -17
  257. package/extensions/mcp/oauth/flow.ts +25 -17
  258. package/extensions/mcp/oauth/provider.ts +14 -8
  259. package/extensions/mcp/oauth/store.ts +34 -16
  260. package/extensions/mcp/panel/keys.ts +12 -11
  261. package/extensions/mcp/panel/render.ts +9 -6
  262. package/extensions/mcp/schema.ts +104 -5
  263. package/extensions/mcp/trust.ts +151 -67
  264. package/extensions/memory/entries.ts +23 -14
  265. package/extensions/memory/index.ts +134 -28
  266. package/extensions/memory/open-external.ts +33 -18
  267. package/extensions/memory/panel.ts +135 -26
  268. package/extensions/newer-model/index.ts +31 -0
  269. package/extensions/notebook/description.ts +18 -0
  270. package/extensions/notebook/index.ts +6 -5
  271. package/extensions/notebook/notebook.ts +1 -1
  272. package/extensions/permissions/index.ts +1300 -381
  273. package/extensions/permissions/matcher.ts +425 -74
  274. package/extensions/permissions/modes.ts +6 -4
  275. package/extensions/permissions/panel/host.ts +130 -0
  276. package/extensions/permissions/panel/keys.ts +48 -0
  277. package/extensions/permissions/panel/render.ts +450 -0
  278. package/extensions/permissions/panel/state.ts +550 -0
  279. package/extensions/permissions/powershell-cmdlets.ts +198 -0
  280. package/extensions/permissions/powershell-paths.ts +197 -0
  281. package/extensions/permissions/powershell-rules.ts +207 -280
  282. package/extensions/permissions/powershell-tree.ts +557 -0
  283. package/extensions/permissions/project-trust.ts +27 -11
  284. package/extensions/permissions/protected-paths.ts +14 -2
  285. package/extensions/permissions/session-grant.ts +6 -0
  286. package/extensions/permissions/settings.ts +166 -31
  287. package/extensions/permissions/subagent-gate.ts +25 -0
  288. package/extensions/permissions/workspace.ts +78 -0
  289. package/extensions/plan-mode/index.ts +156 -69
  290. package/extensions/plan-mode/reminder.ts +89 -21
  291. package/extensions/plan-mode/texts.ts +177 -0
  292. package/extensions/plan-mode/viewer.ts +92 -27
  293. package/extensions/plugins/counts.ts +3 -3
  294. package/extensions/plugins/index.ts +61 -46
  295. package/extensions/plugins/install/install.ts +16 -0
  296. package/extensions/plugins/marketplace/sync.ts +9 -3
  297. package/extensions/plugins/marketplace/types.ts +3 -1
  298. package/extensions/plugins/panel/keys.ts +21 -24
  299. package/extensions/plugins/panel/render.ts +12 -6
  300. package/extensions/plugins/shell-expand.ts +107 -0
  301. package/extensions/plugins/template.ts +32 -15
  302. package/extensions/powershell/child.ts +7 -0
  303. package/extensions/powershell/description.ts +38 -6
  304. package/extensions/powershell/guards.ts +1 -1
  305. package/extensions/powershell/index.ts +12 -7
  306. package/extensions/recap/index.ts +65 -60
  307. package/extensions/recap/prompt.ts +2 -2
  308. package/extensions/recap/scheduler.ts +3 -5
  309. package/extensions/search-tools/grep-merge.ts +39 -0
  310. package/extensions/search-tools/index.ts +0 -0
  311. package/extensions/send-now/chord.ts +62 -0
  312. package/extensions/send-now/index.ts +133 -0
  313. package/extensions/session-title/index.ts +3 -0
  314. package/extensions/session-title/title.ts +4 -1
  315. package/extensions/skill/code-review.ts +97 -0
  316. package/extensions/skill/index.ts +421 -101
  317. package/extensions/skill/invoke.ts +128 -18
  318. package/extensions/skill/listing.ts +133 -9
  319. package/extensions/skill/panel/keys.ts +15 -16
  320. package/extensions/skill/panel/render.ts +5 -2
  321. package/extensions/skill/panel/state.ts +12 -1
  322. package/extensions/subagents/agent-args.ts +39 -0
  323. package/extensions/subagents/agent-description.ts +132 -0
  324. package/extensions/subagents/agents.ts +116 -23
  325. package/extensions/subagents/announce.ts +69 -0
  326. package/extensions/subagents/default-model.ts +2 -3
  327. package/extensions/subagents/delegation-steer.ts +4 -4
  328. package/extensions/subagents/fork-cache.ts +76 -0
  329. package/extensions/subagents/guide-agent.ts +189 -0
  330. package/extensions/subagents/hand-back-review.ts +3 -0
  331. package/extensions/subagents/index.ts +1493 -824
  332. package/extensions/subagents/live-runs.ts +26 -6
  333. package/extensions/subagents/model-select.ts +38 -25
  334. package/extensions/subagents/outcome.ts +2 -2
  335. package/extensions/subagents/panel-keys.ts +73 -31
  336. package/extensions/subagents/panel-render.ts +120 -96
  337. package/extensions/subagents/panel-widget.ts +60 -89
  338. package/extensions/subagents/runner.ts +108 -80
  339. package/extensions/subagents/runs.ts +39 -5
  340. package/extensions/subagents/send-to-main-tool.ts +1 -1
  341. package/extensions/subagents/session-turns.ts +32 -8
  342. package/extensions/subagents/shell-panel.ts +36 -178
  343. package/extensions/subagents/tasks-dialog.ts +170 -0
  344. package/extensions/subagents/viewport-mirror.ts +95 -0
  345. package/extensions/subagents/worktree.ts +57 -13
  346. package/extensions/system-prompt/environment.ts +19 -19
  347. package/extensions/system-prompt/idle-turn.ts +65 -0
  348. package/extensions/system-prompt/index.ts +131 -47
  349. package/extensions/system-prompt/template.ts +24 -50
  350. package/extensions/system-prompt/tiers/common.ts +23 -64
  351. package/extensions/system-prompt/tiers/frontier.ts +32 -11
  352. package/extensions/system-prompt/tiers/low.ts +67 -45
  353. package/extensions/system-prompt/tiers/mid.ts +96 -38
  354. package/extensions/system-reminder/index.ts +175 -13
  355. package/extensions/tasks/descriptions.ts +190 -0
  356. package/extensions/tasks/index.ts +120 -41
  357. package/extensions/tasks/store.ts +83 -16
  358. package/extensions/tool-call-corruption/child.ts +7 -0
  359. package/extensions/tool-call-corruption/index.ts +237 -0
  360. package/extensions/tool-search/announce.ts +16 -0
  361. package/extensions/tool-search/index.ts +189 -41
  362. package/extensions/tool-style/index.ts +68 -10
  363. package/extensions/tool-style/write-description.ts +40 -0
  364. package/extensions/tool-style/write-render.ts +237 -0
  365. package/extensions/turn-duration/index.ts +7 -3
  366. package/extensions/turn-duration/line.ts +47 -4
  367. package/extensions/web/backends.ts +6 -9
  368. package/extensions/web/description.ts +50 -0
  369. package/extensions/web/index.ts +118 -53
  370. package/extensions/web/native-call.ts +15 -0
  371. package/extensions/web/native-results.ts +41 -0
  372. package/extensions/web-fetch/description.ts +42 -0
  373. package/extensions/web-fetch/extract.ts +53 -6
  374. package/extensions/web-fetch/index.ts +125 -76
  375. package/extensions/web-fetch/page-content.ts +19 -0
  376. package/extensions/web-fetch/response.ts +49 -0
  377. package/extensions/web-fetch/summarize.ts +9 -10
  378. package/extensions/workflow/agent-session.ts +105 -18
  379. package/extensions/workflow/args.ts +24 -0
  380. package/extensions/workflow/description.ts +67 -0
  381. package/extensions/workflow/globals.ts +17 -3
  382. package/extensions/workflow/index.ts +145 -162
  383. package/extensions/workflow/records.ts +1 -0
  384. package/extensions/workflow/run-manager.ts +29 -6
  385. package/extensions/workflow/saved-workflows.ts +3 -2
  386. package/extensions/workflow/types.ts +22 -1
  387. package/extensions/workflow/viewer.ts +54 -24
  388. package/extensions/workflow/widget.ts +20 -0
  389. package/extensions/worktree/descriptions.ts +91 -0
  390. package/extensions/worktree/guards.ts +316 -54
  391. package/extensions/worktree/index.ts +121 -39
  392. package/extensions/worktree/powershell-guards.ts +167 -0
  393. package/extensions/worktree/rewrite.ts +14 -16
  394. package/package.json +19 -7
  395. package/skills/artifact-design/SKILL.md +85 -0
  396. package/skills/code-review/SKILL.md +20 -20
  397. package/skills/code-review/cells/arguments-and-flags.md +19 -0
  398. package/skills/code-review/cells/high-3x5-recall-verify.md +137 -0
  399. package/skills/code-review/cells/high-8-inline.md +122 -0
  400. package/skills/code-review/cells/low-1-pass-max4.md +27 -0
  401. package/skills/code-review/cells/low-1-pass-min-files-4.md +28 -0
  402. package/skills/code-review/cells/max-5x5-verify-sweep.md +162 -0
  403. package/skills/code-review/cells/medium-3x5-verify.md +132 -0
  404. package/skills/code-review/cells/minimal-prompt.md +32 -0
  405. package/skills/code-review/cells/xhigh-10-inline-sweep.md +149 -0
  406. package/skills/code-review/cells/xhigh-5x5-verify-sweep.md +162 -0
  407. package/skills/fewer-permission-prompts/SKILL.md +1 -1
  408. package/skills/loop/SKILL.md +11 -0
  409. package/skills/security-review/SKILL.md +2 -5
  410. package/skills/simplify/SKILL.md +7 -5
  411. package/skills/workflow-authoring/SKILL.md +143 -0
  412. package/themes/onecode-light.json +1 -1
  413. package/themes/onecode.json +1 -1
  414. package/types/app.d.ts +58 -0
  415. package/types/community-packages.d.ts +26 -1
  416. package/extensions/auto-mode/recoverability.ts +0 -229
  417. package/extensions/lib/capability-index.ts +0 -466
  418. package/extensions/lib/model-facts.generated.json +0 -2675
  419. package/extensions/lib/model-facts.ts +0 -162
@@ -9,28 +9,39 @@ wake-ups, and how the results of background work reach the model.
9
9
  ## The task list
10
10
 
11
11
  For multi-step work the model keeps a structured task list, using the
12
- `task_create`, `task_get`, `task_list`, and `task_update` tools. Each task
12
+ `task_create`, `task_get`, `task_list`, and `task_update` tools. Frontier
13
+ models and Sonnet 5 or later run without them, as in Claude Code, unless you
14
+ set `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` ([Providers and
15
+ models](providers-and-models.md#prompting-adapts-to-the-model)). Each task
13
16
  has a subject, a description, a status (pending, in progress, or
14
17
  completed), an optional owner, and dependencies on other tasks.
15
18
 
16
19
  While the list has entries, a pinned widget below the transcript shows a
17
20
  summary line and up to 12 tasks: `✔` for completed, `◼` for in progress,
18
- `◻` for pending.
21
+ `◻` for pending. Once every task is completed, the list clears itself about
22
+ five seconds later and the widget goes away. A new task starts a fresh list,
23
+ and its numbering carries on from the old one.
19
24
 
20
- | Command | What it does |
25
+ | Key | What it does |
21
26
  |---|---|
22
- | `/tasks` | Prints the full list. |
23
- | `/tasks hide` | Hides the widget. |
24
- | `/tasks show` | Shows it again. |
27
+ | **alt+t** (**ctrl+\\** on macOS) | Hides the widget down to one line, or shows it again. |
28
+
29
+ `/tasks` isn't about this list. As in Claude Code, it opens the background
30
+ tasks: see [Talk to an agent](subagents-and-workflows.md#talk-to-an-agent).
25
31
 
26
32
  The list is stored inside the session, so it survives a resume and follows
27
- the branch you're on in `/tree`. If the model hasn't touched the list for
33
+ the branch you're on in `/tree`. A list that was already finished comes back
34
+ empty. If the model hasn't touched the list for
28
35
  a while during a long task, it's reminded that the list exists.
29
36
 
30
37
  ## Background shells
31
38
 
32
39
  When the model runs a command with `run_in_background`, the command starts
33
- detached and the model gets a task id at once. Output spools to a log file
40
+ detached and the model gets a task id at once. A background command has no
41
+ time limit: it runs until it exits or is stopped, even if the model passed a
42
+ `timeout`, so a dev server started this way keeps running. (In a `-p` or
43
+ `--mode json` run, the command runs in the foreground instead and stops at
44
+ its timeout; see [Non-interactive runs](#non-interactive-runs).) Output spools to a log file
34
45
  under the session directory. When the command finishes, the model is
35
46
  notified with the result, and it can read the output at any time with
36
47
  `task_output` or stop the command with `task_stop`.
@@ -52,6 +63,16 @@ The turn-duration line reports how many shells are still running when a
52
63
  turn ends. When a session ends, running shells are stopped and the next
53
64
  session is told which ones.
54
65
 
66
+ Background work belongs to the session. While a shell, monitor, background
67
+ agent, or scheduled job is active, a line under the prompt counts them and
68
+ reminds you that `/clear` or quitting stops them. Before `/clear`, `/new`,
69
+ `/resume`, or a fork stops anything, One Code lists what's running and asks
70
+ first. **Cancel** is the default (Esc does the same), so you can let the work
71
+ finish or stop it from `/tasks` before switching. Quitting can't be paused,
72
+ so the line under the prompt is the only warning you get there. A process
73
+ that a finished shell left behind, such as a dev server started with `&`,
74
+ keeps running until you quit.
75
+
55
76
  ## Monitors
56
77
 
57
78
  The `monitor` tool watches a long-running command, or a WebSocket URL, and
@@ -62,28 +83,75 @@ noisy process doesn't flood the conversation.
62
83
 
63
84
  A monitor runs until its command exits or its timeout passes (five minutes
64
85
  by default, one hour at most), or for the whole session when started as
65
- persistent. The model can stop it with `task_stop`.
86
+ persistent. The model can stop it with `task_stop`. The whole stream is
87
+ also written to a log file under the session directory, like a background
88
+ shell's. When `task_output` has more than it can show, it returns the most
89
+ recent part and names that file.
66
90
 
67
91
  A monitor isn't auto-approved, because it runs a shell command; the
68
92
  permission gate treats it like `bash`.
69
93
 
70
94
  ## Scheduled wake-ups and loops
71
95
 
72
- `/loop` runs a task repeatedly. Two forms exist:
73
-
74
- - **Fixed interval.** `/loop 5m check whether the deploy finished` runs the
75
- task every five minutes. Intervals accept `s`, `m`, and `h`, and are
76
- clamped between one minute and one hour. The first run happens
77
- immediately. A tick that arrives while the model is still busy is
78
- skipped, not queued.
96
+ The model can schedule prompts for itself within a session. Ask it to
97
+ "check CI every 10 minutes" or "remind me at 2:30pm to look at the deploy",
98
+ and it calls `cron_create` with a five-field cron expression in your local
99
+ time. A recurring job fires on every match. A one-shot job fires once and
100
+ deletes itself. `cron_list` shows the session's jobs, and `cron_delete`
101
+ cancels one. A session holds up to 50 jobs.
102
+
103
+ A scheduled prompt fires only while the model is idle. A job that comes due
104
+ during a turn waits for the turn to end, then fires once, however many
105
+ times it matched in the meantime. Like Claude Code, the scheduler spreads
106
+ jobs out with a fixed per-job delay: a recurring job fires up to half its
107
+ period late (at most 30 minutes), and a one-shot set for :00 or :30 fires
108
+ up to 90 seconds early. A prompt that's a slash command, such as
109
+ `/babysit-prs`, runs that skill when it fires. When it fires, the transcript shows a dim
110
+ `Running scheduled task` line and the model gets the prompt as its next
111
+ input. Recurring jobs expire after seven days: they fire one last time and
112
+ are deleted. Nothing is written to disk, so jobs end with the session;
113
+ `/clear` asks before cancelling them, then tells you which ones it cancelled.
114
+
115
+ `/loop` runs a task repeatedly. It's Claude Code's `/loop` skill: One Code
116
+ hands your input to the model, and the model sets up the loop itself.
117
+
118
+ - **Fixed interval.** `/loop 5m check whether the deploy finished`, or
119
+ `/loop check the deploy every 20m`, makes the model convert the interval
120
+ to a cron expression, create a recurring job with `cron_create`, confirm
121
+ it with the job id, and run the task right away. An interval that
122
+ doesn't divide its unit evenly is rounded, and the model says what it
123
+ rounded to.
79
124
  - **Self-paced.** `/loop watch the CI run` with no interval lets the model
80
- choose when to check next. It uses the `schedule_wakeup` tool, which
81
- schedules one wake-up at a time between one minute and one hour ahead.
82
- The model is told to pick a delay that matches what it's waiting for,
83
- and to stop the loop when the task is done.
84
-
85
- `/loop status` (or a bare `/loop`) reports the current loop. `/loop stop`
86
- ends it. Only one loop runs at a time, and loops end with the session.
125
+ choose when to check next. It runs the task, then calls
126
+ `schedule_wakeup` with a delay between one minute and one hour. When
127
+ the wake-up fires, the same `/loop` input runs again. If the model ends a
128
+ turn without scheduling the next one, One Code schedules a 20-minute
129
+ fallback once; if that turn also schedules nothing, the loop ends. A
130
+ self-paced loop also ends after seven days.
131
+ - **No prompt.** A bare `/loop` runs an autonomous check that keeps your
132
+ current work moving (CI, review threads, unfinished steps), self-paced.
133
+ `/loop 30m` runs the same check on a cron. If `.claude/loop.md` exists in
134
+ the project (or `~/.claude/loop.md`), its tasks replace the autonomous
135
+ check, and the model sees the file again whenever you edit it.
136
+
137
+ When a self-paced tick finds nothing to do (the model reports `noop: true`),
138
+ the next wake-up line counts the streak, for example `Resuming /loop wakeup
139
+ (2:04pm) · 2 no-op ticks since 2:02pm`, and those quiet ticks leave the
140
+ model's context, replaced by one line saying the loop is healthy. The ticks
141
+ stay visible above in the terminal.
142
+
143
+ A background subagent can schedule its own jobs with the same tools. It sees
144
+ and cancels only its own, a job it made fires into that agent while it is
145
+ still running, and the job is dropped once the agent has ended. The main
146
+ session's `cron_list` shows every job. A subagent that runs until its task is
147
+ done, such as one another subagent starts or any subagent in a `-p` run, can't
148
+ schedule a job: nothing would be left to receive it, so its `cron_create`
149
+ returns an error.
150
+
151
+ To stop a loop, ask the model to stop it, as in Claude Code. It cancels the
152
+ job with `cron_delete`, or ends a self-paced loop with `schedule_wakeup`.
153
+ Several loops can run at once. Set `CLAUDE_CODE_LOOP_KEEPALIVE=0` to turn
154
+ off the fallback wake-up.
87
155
 
88
156
  ## The background list
89
157
 
@@ -100,8 +168,12 @@ Background work reports back through notifications:
100
168
  batch of tool calls, or starts a new turn if the model is idle.
101
169
  - Notifications that arrive within a quarter of a second of each other are
102
170
  merged into one message.
103
- - After you interrupt a turn, notifications are held and attached to your
104
- next prompt instead of starting a turn on their own.
171
+ - After you interrupt a turn, or a turn ends on a provider error,
172
+ notifications are held instead of starting a turn on their own. The held
173
+ notifications ride your next prompt as one message, or go to the next turn
174
+ that starts some other way, such as a skill you type. A monitor keeps a
175
+ single batch while it waits. Scheduled prompts from `/loop` and
176
+ `cron_create` are not held: they keep firing on schedule.
105
177
  - Each notification is framed as an automated event, so the model doesn't
106
178
  mistake it for something you said or approved.
107
179
 
@@ -110,4 +182,7 @@ Background work reports back through notifications:
110
182
  In `-p` and `--mode json` runs nothing can run in the background, because
111
183
  the process exits when the turn settles. Background shells, monitors,
112
184
  subagents, and workflows run to completion and return their output
113
- directly. `/loop` and `schedule_wakeup` don't fire.
185
+ directly. A shell command run this way stops at its `timeout`, or after two
186
+ minutes when the model gives none, and its result says why it stopped. `/loop`, `schedule_wakeup`, and scheduled prompts don't fire;
187
+ `cron_create` still creates the job, and its result says the job can never
188
+ fire.
@@ -42,13 +42,22 @@ the result on an indented `⎿` line. Thinking is collapsed behind
42
42
  Set `CC_NO_INPUT_MARKER=1` or `CC_NO_ASSISTANT_MARKER=1` to remove either
43
43
  marker.
44
44
 
45
+ When you type a slash command that takes an argument followed by a space, a
46
+ dim placeholder after the cursor shows what goes there, as in Claude Code:
47
+ `/loop ` shows `[interval] [prompt]`, and `/add-dir ` shows `<path>`. It
48
+ disappears once you start typing the argument. Skills and custom commands
49
+ get theirs from an `argument-hint` line in their frontmatter. A custom
50
+ command that lists `arguments` instead shows the names you haven't typed
51
+ yet, one space at a time.
52
+
45
53
  ## The working indicator
46
54
 
47
55
  While the model works, a spinner shows a random verb, the elapsed time, and
48
56
  the tokens streamed so far, for example `✳ Cogitating… (12s · ↓ 843 tokens)`.
49
57
  The clock runs from the start of the turn until it settles, through retries.
50
58
 
51
- After the turn, a dim `✻ Cooked for 5m 12s` line reports the total time.
59
+ After the turn, a dim `✻ Cooked for 5m 12s · done 2:33 PM` line reports the
60
+ total time and when the turn finished.
52
61
  Set `CC_TURN_DURATION=0` to turn it off.
53
62
 
54
63
  ## The status line
@@ -56,7 +65,9 @@ Set `CC_TURN_DURATION=0` to turn it off.
56
65
  The footer replaces pi's status line with One Code's own:
57
66
 
58
67
  - **Left:** the working directory, the git branch, and the open pull
59
- request number for that branch when the GitHub CLI is installed.
68
+ request number for that branch when the GitHub CLI is installed. The pull
69
+ request is checked again every minute while you're using the session, so
70
+ one merged or closed mid-session drops off, and a new one appears.
60
71
  - **Right:** context usage as `used/window (percent)`, the session cost,
61
72
  the cache-hit rate of the latest turn, the model, and the reasoning
62
73
  effort. When ultracode is armed, the effort reads `✦ ultracode`.
@@ -78,13 +89,14 @@ when there isn't.
78
89
  - Press **↓** from an empty editor to focus it. If background shells exist,
79
90
  the first **↓** lands on the shells chip; a second **↓** moves to the
80
91
  subagent rows. Otherwise the first **↓** lands on the first subagent.
81
- - In the subagent rows, **↑** and **↓** select, **Enter** opens the
82
- selected agent's live transcript, **x** stops it, **ctrl+x** then
83
- **ctrl+k** stops every agent, and **Esc** leaves the panel. Typing any
84
- other key returns to the editor.
85
- - Inside a transcript, **↑** and **↓** scroll, **PgUp** and **PgDn** page,
86
- **Tab** switches to the next agent, **←** returns to the row list, and
87
- **Enter** closes the view.
92
+ - In the subagent rows, **↑** and **↓** select, **Enter** views the
93
+ selected agent (or `main`), **x** stops it, **ctrl+x** then **ctrl+k**
94
+ stops every agent, and **Esc** hands focus back to the editor. Typing
95
+ any other key does the same, with the key included.
96
+ - While you view an agent, the editor talks to it: the border shows which
97
+ agent, and what you send goes to that agent instead of the main
98
+ conversation. **PgUp** and **PgDn** scroll its transcript, and **Esc** in
99
+ an empty editor takes you back to `main`.
88
100
 
89
101
  The panel's own footer names the keys that apply at each stage. Mouse-wheel
90
102
  scrolling deliberately isn't enabled in the transcript view, because
@@ -130,7 +142,7 @@ and [Plan mode](permissions-modes-and-auto-mode.md#plan-mode).
130
142
  | `/mcp` | The MCP server manager. | **↑↓** navigate, **Enter** open a server or run an action, a digit picks a numbered action, **Esc** back or close. |
131
143
  | `/doctor report` | The setup report. | **↑↓** or **j**/**k** scroll, **Space**/**b** page, **g**/**G** top and end, **f** run the checkup, **Esc** or **q** close. |
132
144
  | `/memory` | The instruction and memory file picker. | **↑↓** move, **Enter** open, **Esc** close. |
133
- | `/effort` | The reasoning-effort slider. | **←→** or **h**/**l** adjust, **Enter** confirm, **Esc** cancel. |
145
+ | `/effort` | The reasoning-effort slider. | **←→** or **h**/**l** adjust, **Enter** confirm, **s** this session only, **Esc** cancel. |
134
146
 
135
147
  **ctrl+c** closes any panel.
136
148
 
@@ -140,8 +152,8 @@ them for its own scrollback; use the keys the panel's footer names.
140
152
  ## Full-screen mode
141
153
 
142
154
  The bundled app runs in pi's full-screen mode, on the terminal's alternate
143
- screen, and restores your terminal when you exit. On a plain pi
144
- installation full-screen mode is opt-in; see
155
+ screen, and restores your terminal when you exit. pi 1.0 and later start
156
+ in full-screen mode too; on an older pi it's opt-in. See
145
157
  [Full-screen mode and themes](configuration.md#full-screen-mode-and-themes).
146
158
 
147
159
  ## Themes
@@ -46,7 +46,9 @@ reported as deleted or moved.
46
46
 
47
47
  ## Shell
48
48
 
49
- `bash` runs a shell command. Its `run_in_background` option starts the
49
+ `bash` runs a shell command. A command in the foreground stops after its
50
+ `timeout` (in milliseconds, at most 600000), or after two minutes when the
51
+ model gives none, as in Claude Code. Its `run_in_background` option starts the
50
52
  command detached and returns a task id; output spools to a log file under
51
53
  the session directory, and completion is reported to the model as a
52
54
  notification. A background shell shows up in the shells section of the
@@ -88,7 +90,7 @@ the model to a better route:
88
90
  |---|---|
89
91
  | `Agent` | Starts a subagent with its own context window. Runs in the background and returns a task id; the result arrives as a notification. Supports forking the current conversation and isolating the agent in a git worktree. |
90
92
  | `SendMessage` | Sends a message to an agent that was started earlier: a running one receives it live, a finished one is resumed from its saved session. Deferred. |
91
- | `list_agents` | Lists the agents started in this session and their status. Deferred. |
93
+ | `list_agents` | Lists the agents started in this session and their status. |
92
94
  | `workflow` | Runs a JavaScript script that coordinates many agents. This is the `ultracode` mechanism. |
93
95
 
94
96
  See [Subagents and workflows](subagents-and-workflows.md).
@@ -101,6 +103,39 @@ See [Subagents and workflows](subagents-and-workflows.md).
101
103
  | `ask_user_question` | Asks you up to four structured questions in a tabbed dialog. See [The terminal interface](terminal-interface.md#the-question-dialog). |
102
104
  | `skill` | Runs a skill by name. See [Skills](skills-plugins-and-mcp.md#skills). |
103
105
 
106
+ ## Artifacts
107
+
108
+ `artifact` saves a self-contained HTML page the model wrote (a report, a
109
+ dashboard, a visual explainer, a small tool) and opens it in your default
110
+ browser. Claude Code publishes these pages to claude.ai; One Code keeps them
111
+ on your machine under `~/.onecode/artifacts/`, so nothing is uploaded.
112
+ Before writing a page, the model loads the bundled `artifact-design` skill,
113
+ which holds the page rules: a real title, light and dark themes, and a
114
+ layout that works at phone width.
115
+
116
+ The page opens under a slim bar. The home icon goes to the gallery, and
117
+ **Download** saves the page as an HTML file. The title opens a menu with the
118
+ version and update time, Download HTML, Copy file path, Reload, the page
119
+ without the bar, the list of versions, and All artifacts. Claude Code's
120
+ Share and Chat buttons are left out, since there is no server behind a local
121
+ artifact.
122
+
123
+ When the model publishes the same file again with changed contents, the
124
+ artifact is updated in place as a new version, and every earlier version is
125
+ kept. Publishing unchanged contents keeps the current version. Pick an earlier
126
+ version from the title menu to view or download it. The browser tab does not
127
+ reload by itself, so refresh it to see the update.
128
+
129
+ `~/.onecode/artifacts/index.html` is a gallery of every artifact, newest
130
+ first, with links to each earlier version and a Download button. Run `/artifacts` to pick one and open it, save a copy to
131
+ `~/Downloads`, show its path, or delete it. To stop the browser opening on
132
+ each new artifact, set `artifacts.autoOpen` to `false` (see
133
+ [Settings reference](configuration.md#settings-reference)). Over SSH, or on
134
+ a machine with no display, the model gives you the file path instead.
135
+
136
+ Publishing passes through the permission gate like any other tool, and in
137
+ plan mode it is refused. Deleting always asks you first. Deferred.
138
+
104
139
  ## Tasks and background work
105
140
 
106
141
  | Tool | What it does |
@@ -108,7 +143,8 @@ See [Subagents and workflows](subagents-and-workflows.md).
108
143
  | `task_create`, `task_get`, `task_list`, `task_update` | Maintain the structured task list shown in the pinned widget. Deferred. |
109
144
  | `monitor` | Watches a long-running command or a WebSocket and reports each output line as an event. Deferred. |
110
145
  | `task_output`, `task_stop` | Read the output of a background task or stop it. Deferred. |
111
- | `schedule_wakeup` | Schedules a prompt for later; the mechanism behind self-paced `/loop`. Deferred. |
146
+ | `schedule_wakeup` | Schedules the next iteration of a self-paced `/loop`. The pending wake-up shows in `cron_list`. |
147
+ | `cron_create`, `cron_list`, `cron_delete` | Schedule a prompt on a cron expression within the session, list the jobs, or cancel one. A fixed-interval `/loop` uses them. Deferred. |
112
148
 
113
149
  See [Tasks and background work](tasks-and-background-work.md).
114
150
 
@@ -150,8 +186,11 @@ and the model is steered to `tool_search`.
150
186
  In `-p` and `--mode json` runs the process exits when the turn settles, so
151
187
  nothing can run in the background. Tools that would detach work run to
152
188
  completion instead and return the output in their result: `bash` and
153
- `powershell` with `run_in_background`, `Agent`, `monitor`, and `workflow`. Timers such as
154
- `schedule_wakeup` and `/loop` never fire in these modes.
189
+ `powershell` with `run_in_background`, `Agent`, `monitor`, and `workflow`.
190
+ A shell command run this way holds the run like a foreground command, so it
191
+ stops at the same timeout, two minutes unless the model gives another, and
192
+ the result says so. Timers such as
193
+ `schedule_wakeup`, `cron_create`, and `/loop` never fire in these modes.
155
194
 
156
195
  Give a scripted run its own deadline. One Code has no idle timeout on a
157
196
  provider response, so a stream that stalls mid-reply keeps the process
@@ -177,6 +216,7 @@ matchers, and mapped to One Code's names. Case is ignored.
177
216
  | `Read`, `Write`, `Edit` | `read`, `write`, `edit` |
178
217
  | `Grep`, `Glob`, `LS` | `grep`, `find`, `ls` |
179
218
  | `NotebookEdit` | `notebook_edit` |
219
+ | `Artifact` | `artifact` |
180
220
  | `WebFetch`, `WebSearch` | `web_fetch`, `web_search` |
181
221
  | `Task`, `Agent` | `Agent` |
182
222
  | `SendMessage` | `SendMessage` |
@@ -190,6 +230,7 @@ matchers, and mapped to One Code's names. Case is ignored.
190
230
  | `TaskOutput`, `TaskStop` | `task_output`, `task_stop` |
191
231
  | `Monitor` | `monitor` |
192
232
  | `ScheduleWakeup` | `schedule_wakeup` |
233
+ | `CronCreate`, `CronList`, `CronDelete` | `cron_create`, `cron_list`, `cron_delete` |
193
234
  | `EnterWorktree`, `ExitWorktree` | `enter_worktree`, `exit_worktree` |
194
235
  | `LSP` | `lsp_diagnostics` |
195
236
  | `ListMcpResourcesTool`, `ReadMcpResourceTool`, `ReadMcpResourceDirTool` | `list_mcp_resources`, `read_mcp_resource`, `read_mcp_resource_dir` |
@@ -38,7 +38,8 @@ pins pi itself.
38
38
 
39
39
  **`Failed to load extension` on startup.** The extension package and the
40
40
  pi it runs on are out of step. On the bundled app, reinstall it. On your own
41
- pi, run `pi update --extensions`.
41
+ pi, run `pi update npm:one-code-extension`, and update pi itself with
42
+ `pi update` if it's older than 0.84.3.
42
43
 
43
44
  **The stock pi first-run wizard didn't appear.** The bundled app seeds
44
45
  pi's settings with the One Code theme, quiet startup, and full-screen mode
@@ -87,10 +88,10 @@ nothing usable; the gate fails closed. Check `/auto-mode config` for the
87
88
  model in use, and `/doctor report` for provider credentials. Set
88
89
  `CC_AUTO_MODE_DEBUG=1` to see each verdict on stderr.
89
90
 
90
- **The classifier approves or blocks something it shouldn't.** Choose a
91
- stronger classifier with `/auto-mode model <provider/model-id>`. A
92
- Haiku-class classifier is a measurably weaker boundary than a Sonnet-class
93
- one.
91
+ **The classifier approves or blocks something it shouldn't.** A cheap-tier
92
+ classifier is a measurably weaker boundary than a workhorse- or
93
+ frontier-tier one. Choose a stronger classifier with `/auto-mode model`, or
94
+ a stronger main model.
94
95
 
95
96
  ## Models and providers
96
97
 
@@ -107,7 +108,8 @@ session is worth reporting.
107
108
  **A side call failed on a Gemini or OpenAI model with a message about
108
109
  reasoning or temperature.** Some models reject an option others accept.
109
110
  One Code avoids these options in its side calls; if you still see this,
110
- choose a different classifier or reader model and report the model.
111
+ report the model and error. The reader model is selected automatically;
112
+ `/auto-mode model` chooses the classifier.
111
113
 
112
114
  ## Web search
113
115
 
@@ -157,9 +159,11 @@ with the session. The new session lists what was stopped.
157
159
  **A resumed session is in a different permission mode.** Modes aren't
158
160
  saved with the session. Pass `--permission-mode` or set a default.
159
161
 
160
- **The `/effort` level reset after a restart.** `/effort` doesn't save the
161
- level. Open pi's `/thinking` picker and press **ctrl+s** to save a startup
162
- default, or pass `--thinking <level>` at launch.
162
+ **The `/effort` level reset after a restart.** `/effort` saves `low`,
163
+ `medium`, `high` and `xhigh` for the model you're on, so a level set on a
164
+ different model, a `max` or `ultracode` level, or one picked with **s**
165
+ (this session only) doesn't come back. Set it again on this model, or pass
166
+ `--thinking <level>` at launch.
163
167
 
164
168
  ## Interface
165
169
 
@@ -59,7 +59,13 @@ and interactive git are refused because the shell has no console to prompt
59
59
  on.
60
60
 
61
61
  Inside a worktree session, every PowerShell command is prefixed with a
62
- `Set-Location` into the worktree, the way bash commands get a `cd`.
62
+ `Set-Location` into the worktree, the way bash commands get a `cd`. The
63
+ same git guard applies too: git that would reach your main checkout or
64
+ another worktree (through `Set-Location`, `git -C`, `--git-dir`, or a
65
+ `GIT_DIR` variable) is refused, and so is git inside a script block, a
66
+ call operator or a nested shell, where the guard can't tell which
67
+ repository it would touch. Plain `git` statements in the worktree run as
68
+ usual.
63
69
 
64
70
  ## Permission rules
65
71
 
@@ -88,35 +94,52 @@ counterparts. Hook matchers accept `PowerShell`, `Bash|PowerShell`, and
88
94
 
89
95
  ## Auto mode and plan mode
90
96
 
91
- Claude Code's read-only cmdlets run without a prompt or a classifier call:
92
- `Get-ChildItem`, `Get-Content`, `Get-Item`, `Test-Path`, `Resolve-Path`,
93
- `Select-String`, `Get-Location`, `Get-Process`, `Get-Service`,
94
- `Get-FileHash`, `Get-Acl`, `Format-Hex`, `findstr`, `where.exe`, plus
95
- `Write-Output` and `Write-Host`. One Code adds the pure pipeline cmdlets
96
- those are usually piped through, `Select-Object`, `Sort-Object`,
97
- `Measure-Object`, `Group-Object`, `ConvertFrom-Json`, `Out-String` and the
98
- `Format-*` family, so `Select-String … | Measure-Object` counts as read-only
99
- too; `Where-Object` and `ForEach-Object` do not, because they take script
100
- blocks. The check is textual and strict: no
101
- redirection, no variables, no script blocks, and every path inside the
102
- project or one of the harness's own session directories (auto-memory, the
103
- scratchpad, persisted tool output, this project's transcripts). A relative
104
- path is inside by construction; an absolute or drive-lettered path is
105
- resolved and checked, so `Select-String -Path C:\src\app\notes.md` runs
106
- unprompted while `Get-Content C:\Users\you\.ssh\id_rsa` does not. A UNC
107
- path, `~`, a registry or environment drive, or `..` always takes the
108
- ordinary route.
109
-
110
- Everything else goes to the auto-mode classifier. One Code has no PowerShell
111
- command parser yet, so unlike bash there is no deterministic shortcut for
112
- in-project deletes: a `Remove-Item` inside the repository is classified, not
113
- auto-approved. The safety floor still applies. Any PowerShell line that
114
- names a permission settings file (`.claude/settings.json`,
115
- `~/.onecode/settings.json`, `.claude.json`, managed settings) stops for you,
116
- whether it reads or writes.
117
-
118
- Plan mode allows the read-only cmdlets above and refuses the rest, as it
119
- does for bash.
97
+ One Code judges a PowerShell command the way PowerShell itself reads it. It
98
+ keeps one PowerShell process running in the background and asks PowerShell's
99
+ own parser what the command does: which commands it runs, how each argument
100
+ binds to a parameter, and what every alias really points to on your machine.
101
+ That process is the same PowerShell the tool runs, so the check and the
102
+ command can't disagree about quotes, backticks, or a stray `–` dash. If the
103
+ parser can't answer (it's still starting, it crashed, or your machine runs
104
+ PowerShell in Constrained Language Mode), nothing gets a shortcut and the
105
+ command takes the ordinary route.
106
+
107
+ Read-only commands run without a prompt or a classifier call. These are
108
+ Claude Code's read-only cmdlets, `Get-ChildItem`, `Get-Content`, `Get-Item`,
109
+ `Test-Path`, `Resolve-Path`, `Select-String`, `Get-Location`, `Get-Process`,
110
+ `Get-Service`, `Get-FileHash`, `Get-Acl`, `Format-Hex`, `findstr`,
111
+ `where.exe`, `Write-Output` and `Write-Host`, plus the pipeline cmdlets
112
+ they're usually piped through: `Select-Object`, `Sort-Object`,
113
+ `Measure-Object`, `Group-Object`, `ConvertFrom-Json`, `Out-String`,
114
+ `Out-Null` and the `Format-*` family. `Where-Object` and `ForEach-Object`
115
+ count too when their script block only reads `$_` and compares, like
116
+ `Where-Object { $_.Length -gt 1kb }`. Each cmdlet is checked parameter by
117
+ parameter, so `Get-Content -Wait` or `Get-ChildItem -FollowSymlink` doesn't
118
+ qualify. Every path has to land inside the project or one of the harness's
119
+ own session directories (auto-memory, the scratchpad, persisted tool output,
120
+ this project's transcripts), judged where it resolves, so a symlink out of
121
+ the project counts as outside. A UNC path, `~`, a registry or environment
122
+ drive, a provider path, or `..` always takes the ordinary route. So does a
123
+ cmdlet that takes paths from the pipeline, like `Get-Content list.txt |
124
+ Get-Item`, because it reads whatever the list names.
125
+
126
+ On a frontier or workhorse model in auto or acceptEdits mode, Claude Code's
127
+ acceptEdits cmdlets skip the classifier too: `Set-Content`, `Add-Content`,
128
+ `Remove-Item` and `Clear-Content` on paths inside the working directories.
129
+ The same limits as the bash file commands apply. A wildcard target, a path
130
+ outside, a credential or protected file, or removing the project root or a
131
+ `.git` goes to the classifier. So does a recursive `Remove-Item` over a
132
+ folder with a link inside, because Windows PowerShell 5.1 follows it.
133
+ `New-Item`, `Copy-Item` and `Move-Item` are always classified, as Claude Code
134
+ always asks about them. On cheaper models every write is classified.
135
+
136
+ Everything else goes to the auto-mode classifier. The safety floor still
137
+ applies. Any PowerShell line that names a permission settings file
138
+ (`.claude/settings.json`, `~/.onecode/settings.json`, `.claude.json`,
139
+ managed settings) stops for you, whether it reads or writes.
140
+
141
+ Plan mode allows the read-only commands and refuses the rest, as it does for
142
+ bash.
120
143
 
121
144
  ## Hooks
122
145
 
@@ -172,13 +195,22 @@ is the same.
172
195
  - The PowerShell tool has also been driven through a real model with a
173
196
  `pwsh` on macOS, the same way Claude Code's own PowerShell tool was
174
197
  captured for reference.
175
- - An interactive session on a Windows desktop (Windows Terminal, permission
176
- prompts, plan mode) has not been checked by hand yet. If you hit something
177
- there, [Troubleshooting](troubleshooting.md) says what to collect.
198
+ - An interactive session on a real Windows machine (a Windows Server 2025
199
+ VM, the same kernel as the CI runner): the interface in Windows Terminal,
200
+ `alt+m` mode cycling, a permission prompt, plan mode, the PowerShell tool's
201
+ rendering, a background PowerShell shell with its panel and notification,
202
+ diagnostics through an npm-installed language server, and both `/doctor`
203
+ surfaces, with Git for Windows present and with PowerShell alone. Windows
204
+ 10 and 11 desktops have not had the same pass; if you hit something there,
205
+ [Troubleshooting](troubleshooting.md) says what to collect.
178
206
 
179
207
  ## Not provided
180
208
 
181
- - No PowerShell command parser or pre-gate beyond the read-only list.
209
+ - No shortcut for most of PowerShell's native commands (`git`, `npm`, `rg`):
210
+ they always go to the classifier in auto mode, where the bash tool
211
+ fast-paths the read-only ones. Windows' own `findstr` and `where.exe` are
212
+ the exceptions: a read-only use inside the project runs without the
213
+ classifier, and plan mode allows it.
182
214
  - No sandbox on Windows. Claude Code has none there either.
183
215
  - `defaultShell` for the user's own `!` prefix is pi's to handle; One Code
184
216
  does not read it.