@indigoai-us/hq-cli 5.314.0 → 5.316.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 (1193) hide show
  1. package/CHANGELOG.md +4320 -1
  2. package/README.md +113 -0
  3. package/assets/bot-workers/setup/context/USER-GUIDE.md +404 -0
  4. package/assets/bot-workers/setup/context/quick-reference.md +199 -0
  5. package/assets/bot-workers/setup/skills/agents-and-team.md +167 -0
  6. package/assets/bot-workers/setup/skills/explain-hq.md +35 -0
  7. package/assets/bot-workers/setup/skills/first-company.md +74 -0
  8. package/assets/bot-workers/setup/skills/joining-a-team.md +125 -0
  9. package/assets/bot-workers/setup/skills/pricing.md +92 -0
  10. package/assets/bot-workers/setup/skills/standing-help.md +81 -0
  11. package/assets/bot-workers/setup/skills/your-business.md +281 -0
  12. package/assets/bot-workers/setup/worker.yaml +791 -0
  13. package/assets/lanes-hooks/hq-lanes-drain.json +15 -0
  14. package/assets/lanes-hooks/hq-lanes-drain.mjs +275 -0
  15. package/assets/lanes-hooks/hq-lanes-drain.sh +21 -0
  16. package/assets/lanes-reconcile/hq-lanes-reconcile.service +11 -0
  17. package/assets/lanes-reconcile/hq-lanes-reconcile.timer +12 -0
  18. package/assets/scaffold/.claude/hooks/validate-policy-frontmatter.sh +485 -0
  19. package/assets/scaffold/core/scripts/audit-log.sh +384 -0
  20. package/assets/scaffold/core/scripts/checkpoint-stop-gate.sh +281 -43
  21. package/assets/scaffold/core/scripts/clean-worktree-reconcile-handoff.sh +171 -0
  22. package/assets/scaffold/core/scripts/detect-stale-review-base.sh +199 -0
  23. package/assets/scaffold/core/scripts/eval-trigger.sh +193 -0
  24. package/assets/scaffold/core/scripts/git-pack-extension-check.sh +164 -0
  25. package/assets/scaffold/core/scripts/handoff-finalize.sh +688 -0
  26. package/assets/scaffold/core/scripts/handoff-open-steps.sh +81 -0
  27. package/assets/scaffold/core/scripts/handoff-post.sh +252 -0
  28. package/assets/scaffold/core/scripts/hook-lib.sh +345 -50
  29. package/assets/scaffold/core/scripts/hq-delegate-bundle.sh +307 -0
  30. package/assets/scaffold/core/scripts/hq-delegate-grant.sh +252 -0
  31. package/assets/scaffold/core/scripts/hq-delegate-pickup.sh +99 -0
  32. package/assets/scaffold/core/scripts/hq-delegate-publish.sh +91 -0
  33. package/assets/scaffold/core/scripts/hq-delegate-repo.sh +158 -0
  34. package/assets/scaffold/core/scripts/hq-delegate-resolve.sh +145 -0
  35. package/assets/scaffold/core/scripts/hq-delegate-secrets.sh +129 -0
  36. package/assets/scaffold/core/scripts/hq-delegate-send.sh +259 -0
  37. package/assets/scaffold/core/scripts/hq-delegate-transfer.sh +175 -0
  38. package/assets/scaffold/core/scripts/hq-delegate-verify.sh +238 -0
  39. package/assets/scaffold/core/scripts/hq-dm-bind.sh +585 -0
  40. package/assets/scaffold/core/scripts/hq-job-notify.sh +389 -0
  41. package/assets/scaffold/core/scripts/hq-job-probe.sh +835 -0
  42. package/assets/scaffold/core/scripts/hq-job-remediate.sh +359 -0
  43. package/assets/scaffold/core/scripts/hq-job-run.sh +1025 -0
  44. package/assets/scaffold/core/scripts/hq-pin.sh +118 -0
  45. package/assets/scaffold/core/scripts/hq-session.sh +184 -23
  46. package/assets/scaffold/core/scripts/jobs-schedule-parse.sh +310 -0
  47. package/assets/scaffold/core/scripts/jobs-validate.sh +451 -0
  48. package/assets/scaffold/core/scripts/knowledge-prefs.sh +55 -0
  49. package/assets/scaffold/core/scripts/lib/portable.sh +211 -0
  50. package/assets/scaffold/core/scripts/lib/secret-patterns.sh +58 -0
  51. package/assets/scaffold/core/scripts/lib/session-id.sh +3 -2
  52. package/assets/scaffold/core/scripts/lib/session-scope-capability.sh +1 -1
  53. package/assets/scaffold/core/scripts/lib/work-mesh-enqueue.sh +2 -1
  54. package/assets/scaffold/core/scripts/lib/work-mesh-live-hook.sh +378 -0
  55. package/assets/scaffold/core/scripts/lib/work-mesh-live-rebind.sh +141 -0
  56. package/assets/scaffold/core/scripts/migrate-policy-triggers.sh +378 -0
  57. package/assets/scaffold/core/scripts/ontology-audience-grant.sh +81 -0
  58. package/assets/scaffold/core/scripts/ontology-brief.mjs +93 -0
  59. package/assets/scaffold/core/scripts/ontology-candidate.sh +100 -0
  60. package/assets/scaffold/core/scripts/ontology-garden.mjs +238 -0
  61. package/assets/scaffold/core/scripts/ontology-source-worklist.sh +79 -0
  62. package/assets/scaffold/core/scripts/outpost-jobs-reconcile.sh +834 -0
  63. package/assets/scaffold/core/scripts/policy-age-report.sh +156 -0
  64. package/assets/scaffold/core/scripts/policy-retire.sh +199 -0
  65. package/assets/scaffold/core/scripts/qmd-reindex-after-sync.sh +10 -87
  66. package/assets/scaffold/core/scripts/qmd-reindex-bg.sh +40 -0
  67. package/assets/scaffold/core/scripts/read-policy-frontmatter.sh +32 -0
  68. package/assets/scaffold/core/scripts/rebuild-company-knowledge-index.sh +36 -3
  69. package/assets/scaffold/core/scripts/rebuild-projects-index.sh +99 -12
  70. package/assets/scaffold/core/scripts/refresh-vault-access.sh +188 -0
  71. package/assets/scaffold/core/scripts/register-project.sh +262 -0
  72. package/assets/scaffold/core/scripts/repo-run-registry.sh +408 -0
  73. package/assets/scaffold/core/scripts/resolve-company.sh +199 -0
  74. package/assets/scaffold/core/scripts/resume-thread-lock.sh +285 -0
  75. package/assets/scaffold/core/scripts/share-suggestion-state.sh +541 -0
  76. package/assets/scaffold/core/scripts/source-yaml-validate.sh +36 -0
  77. package/assets/scaffold/core/scripts/token-usage-report.sh +81 -20
  78. package/assets/scaffold/core/scripts/verify-story-deliverables.sh +148 -0
  79. package/assets/scaffold/core/scripts/work-mesh-live-bind-trusted.sh +152 -0
  80. package/assets/scaffold/core/scripts/work-mesh-live-rebind.sh +59 -0
  81. package/assets/scaffold/core/scripts/worktree-gc.sh +362 -0
  82. package/contracts/preflight/v1/fixtures.json +87 -0
  83. package/contracts/preflight/v1/schema.json +58 -0
  84. package/dist/bin/hq-auth-refresh.d.ts +2 -0
  85. package/dist/bin/hq-auth-refresh.js +12 -6
  86. package/dist/command-catalog.generated.d.ts +10798 -0
  87. package/dist/command-catalog.generated.js +13915 -0
  88. package/dist/command-registration-plan.d.ts +474 -0
  89. package/dist/command-registration-plan.js +136 -0
  90. package/dist/commands/__fixtures__/access-vault.d.ts +2 -0
  91. package/dist/commands/__fixtures__/access-vault.js +1 -1
  92. package/dist/commands/_patterns.d.ts +16 -0
  93. package/dist/commands/_patterns.js +20 -3
  94. package/dist/commands/access.d.ts +2 -1
  95. package/dist/commands/access.js +58 -49
  96. package/dist/commands/agent-enroll.d.ts +146 -0
  97. package/dist/commands/agent-enroll.js +401 -0
  98. package/dist/commands/agent-inbox.d.ts +9 -0
  99. package/dist/commands/agent-inbox.js +102 -0
  100. package/dist/commands/agent-kit.d.ts +87 -0
  101. package/dist/commands/agent-kit.js +480 -0
  102. package/dist/commands/agent-mcp.d.ts +24 -0
  103. package/dist/commands/agent-mcp.js +127 -0
  104. package/dist/commands/agent-probe.d.ts +77 -0
  105. package/dist/commands/agent-probe.js +335 -0
  106. package/dist/commands/agent.d.ts +13 -0
  107. package/dist/commands/agent.js +40 -0
  108. package/dist/commands/agents.d.ts +106 -4
  109. package/dist/commands/agents.js +924 -45
  110. package/dist/commands/auth.d.ts +1 -0
  111. package/dist/commands/auth.js +189 -19
  112. package/dist/commands/billing-sponsor.d.ts +83 -0
  113. package/dist/commands/billing-sponsor.js +344 -0
  114. package/dist/commands/billing.d.ts +3 -0
  115. package/dist/commands/billing.js +6 -1
  116. package/dist/commands/bot-companies.d.ts +40 -0
  117. package/dist/commands/bot-companies.js +64 -0
  118. package/dist/commands/bot-continuity.d.ts +28 -0
  119. package/dist/commands/bot-continuity.js +68 -0
  120. package/dist/commands/bot-jobs.d.ts +131 -0
  121. package/dist/commands/bot-jobs.js +474 -0
  122. package/dist/commands/bot.d.ts +278 -0
  123. package/dist/commands/bot.js +1982 -0
  124. package/dist/commands/channels.js +56 -1
  125. package/dist/commands/cloud-demote.js +3 -2
  126. package/dist/commands/cloud-provision.d.ts +14 -0
  127. package/dist/commands/cloud-provision.js +232 -58
  128. package/dist/commands/cloud-retire.d.ts +51 -0
  129. package/dist/commands/cloud-retire.js +154 -0
  130. package/dist/commands/cloud.d.ts +49 -15
  131. package/dist/commands/cloud.js +357 -122
  132. package/dist/commands/company-rename-flag.d.ts +4 -0
  133. package/dist/commands/company-rename-flag.js +7 -0
  134. package/dist/commands/company-rename.d.ts +4 -0
  135. package/dist/commands/company-rename.js +90 -0
  136. package/dist/commands/company-transfer.d.ts +4 -28
  137. package/dist/commands/company-transfer.js +5 -49
  138. package/dist/commands/company.js +68 -3
  139. package/dist/commands/core-audit-log-native.d.ts +9 -0
  140. package/dist/commands/core-audit-log-native.js +257 -0
  141. package/dist/commands/core-checkpoint-gate-setting.d.ts +59 -0
  142. package/dist/commands/core-checkpoint-gate-setting.js +163 -0
  143. package/dist/commands/core-checkpoint-stop-gate-native.d.ts +34 -0
  144. package/dist/commands/core-checkpoint-stop-gate-native.js +725 -0
  145. package/dist/commands/core-checkpoint.d.ts +19 -9
  146. package/dist/commands/core-checkpoint.js +301 -37
  147. package/dist/commands/core-command-catalog.d.ts +34 -0
  148. package/dist/commands/core-command-catalog.js +62 -0
  149. package/dist/commands/core-company-index-scope-flag.d.ts +3 -0
  150. package/dist/commands/core-company-index-scope-flag.js +6 -0
  151. package/dist/commands/core-delegate-w1b.d.ts +10 -0
  152. package/dist/commands/core-delegate-w1b.js +1219 -0
  153. package/dist/commands/core-delegate.d.ts +46 -0
  154. package/dist/commands/core-delegate.js +1040 -0
  155. package/dist/commands/core-detect-stale-review-base-native.d.ts +23 -0
  156. package/dist/commands/core-detect-stale-review-base-native.js +178 -0
  157. package/dist/commands/core-dm-bind-native.d.ts +32 -0
  158. package/dist/commands/core-dm-bind-native.js +668 -0
  159. package/dist/commands/core-eval-trigger-native.d.ts +4 -0
  160. package/dist/commands/core-eval-trigger-native.js +12 -0
  161. package/dist/commands/core-git-pack-extension-check-native.d.ts +22 -0
  162. package/dist/commands/core-git-pack-extension-check-native.js +190 -0
  163. package/dist/commands/core-handoff-fast.d.ts +18 -0
  164. package/dist/commands/core-handoff-fast.js +104 -0
  165. package/dist/commands/core-handoff-open-steps.d.ts +21 -0
  166. package/dist/commands/core-handoff-open-steps.js +264 -0
  167. package/dist/commands/core-handoff.d.ts +24 -0
  168. package/dist/commands/core-handoff.js +1144 -0
  169. package/dist/commands/core-hook-state-helpers-native.d.ts +11 -0
  170. package/dist/commands/core-hook-state-helpers-native.js +74 -0
  171. package/dist/commands/core-hq-session-native.d.ts +39 -0
  172. package/dist/commands/core-hq-session-native.js +579 -0
  173. package/dist/commands/core-job-native-utils.d.ts +6 -0
  174. package/dist/commands/core-job-native-utils.js +80 -0
  175. package/dist/commands/core-job-native.d.ts +5 -0
  176. package/dist/commands/core-job-native.js +16 -0
  177. package/dist/commands/core-job-notify-native.d.ts +36 -0
  178. package/dist/commands/core-job-notify-native.js +359 -0
  179. package/dist/commands/core-job-probe-native.d.ts +45 -0
  180. package/dist/commands/core-job-probe-native.js +564 -0
  181. package/dist/commands/core-job-remediate-native.d.ts +26 -0
  182. package/dist/commands/core-job-remediate-native.js +374 -0
  183. package/dist/commands/core-job-remote-launcher.d.ts +7 -0
  184. package/dist/commands/core-job-remote-launcher.js +51 -0
  185. package/dist/commands/core-job-run-native.d.ts +47 -0
  186. package/dist/commands/core-job-run-native.js +1215 -0
  187. package/dist/commands/core-jobs-native.d.ts +25 -0
  188. package/dist/commands/core-jobs-native.js +1339 -0
  189. package/dist/commands/core-knowledge-prefs.d.ts +11 -0
  190. package/dist/commands/core-knowledge-prefs.js +137 -0
  191. package/dist/commands/core-migrate-policy-triggers-native.d.ts +21 -0
  192. package/dist/commands/core-migrate-policy-triggers-native.js +374 -0
  193. package/dist/commands/core-native-handoff-flag.d.ts +4 -0
  194. package/dist/commands/core-native-handoff-flag.js +7 -0
  195. package/dist/commands/core-native-hook-helper-commands.d.ts +4 -0
  196. package/dist/commands/core-native-hook-helper-commands.js +56 -0
  197. package/dist/commands/core-native-hook-helpers-flag.d.ts +4 -0
  198. package/dist/commands/core-native-hook-helpers-flag.js +7 -0
  199. package/dist/commands/core-native-jobs-flag.d.ts +4 -0
  200. package/dist/commands/core-native-jobs-flag.js +7 -0
  201. package/dist/commands/core-native-policy-flag.d.ts +9 -0
  202. package/dist/commands/core-native-policy-flag.js +12 -0
  203. package/dist/commands/core-native-session-flag.d.ts +4 -0
  204. package/dist/commands/core-native-session-flag.js +7 -0
  205. package/dist/commands/core-native-utilities-flag.d.ts +4 -0
  206. package/dist/commands/core-native-utilities-flag.js +7 -0
  207. package/dist/commands/core-native-utilities.d.ts +29 -0
  208. package/dist/commands/core-native-utilities.js +54 -0
  209. package/dist/commands/core-native-worker-skills-flag.d.ts +4 -0
  210. package/dist/commands/core-native-worker-skills-flag.js +7 -0
  211. package/dist/commands/core-ontology-native.d.ts +17 -0
  212. package/dist/commands/core-ontology-native.js +916 -0
  213. package/dist/commands/core-ontology.d.ts +66 -0
  214. package/dist/commands/core-ontology.js +430 -0
  215. package/dist/commands/core-pin-native.d.ts +14 -0
  216. package/dist/commands/core-pin-native.js +236 -0
  217. package/dist/commands/core-policy-frontmatter.d.ts +8 -0
  218. package/dist/commands/core-policy-frontmatter.js +52 -0
  219. package/dist/commands/core-policy.d.ts +14 -0
  220. package/dist/commands/core-policy.js +1018 -0
  221. package/dist/commands/core-refresh-vault-access-native.d.ts +20 -0
  222. package/dist/commands/core-refresh-vault-access-native.js +229 -0
  223. package/dist/commands/core-register-project-native.d.ts +30 -0
  224. package/dist/commands/core-register-project-native.js +347 -0
  225. package/dist/commands/core-repo-run-registry-native.d.ts +19 -0
  226. package/dist/commands/core-repo-run-registry-native.js +357 -0
  227. package/dist/commands/core-resolve-company-command.d.ts +4 -0
  228. package/dist/commands/core-resolve-company-command.js +42 -0
  229. package/dist/commands/core-resolve-company-native.d.ts +28 -0
  230. package/dist/commands/core-resolve-company-native.js +408 -0
  231. package/dist/commands/core-share-suggestion-state-native.d.ts +18 -0
  232. package/dist/commands/core-share-suggestion-state-native.js +445 -0
  233. package/dist/commands/core-work-mesh-bind-trusted-native.d.ts +32 -0
  234. package/dist/commands/core-work-mesh-bind-trusted-native.js +190 -0
  235. package/dist/commands/core-work-mesh-live-rebind-native.d.ts +18 -0
  236. package/dist/commands/core-work-mesh-live-rebind-native.js +262 -0
  237. package/dist/commands/core-worker-lint-native.d.ts +4 -0
  238. package/dist/commands/core-worker-lint-native.js +160 -0
  239. package/dist/commands/core-worker-share-native.d.ts +4 -0
  240. package/dist/commands/core-worker-share-native.js +260 -0
  241. package/dist/commands/core-worker-skills-command.d.ts +8 -0
  242. package/dist/commands/core-worker-skills-command.js +33 -0
  243. package/dist/commands/core-worker-skills-runtime.d.ts +33 -0
  244. package/dist/commands/core-worker-skills-runtime.js +86 -0
  245. package/dist/commands/core.d.ts +4 -0
  246. package/dist/commands/core.js +282 -80
  247. package/dist/commands/crm.js +52 -3
  248. package/dist/commands/daemon.d.ts +63 -0
  249. package/dist/commands/daemon.js +877 -0
  250. package/dist/commands/db-provision.js +4 -4
  251. package/dist/commands/db-sql.js +7 -21
  252. package/dist/commands/deploy-comments.d.ts +3 -0
  253. package/dist/commands/deploy-comments.js +162 -0
  254. package/dist/commands/dm.d.ts +119 -12
  255. package/dist/commands/dm.js +388 -38
  256. package/dist/commands/doctor.d.ts +12 -0
  257. package/dist/commands/doctor.js +158 -12
  258. package/dist/commands/feedback.d.ts +6 -0
  259. package/dist/commands/feedback.js +86 -37
  260. package/dist/commands/files-browse.d.ts +32 -12
  261. package/dist/commands/files-browse.js +176 -60
  262. package/dist/commands/files.d.ts +17 -0
  263. package/dist/commands/files.js +300 -47
  264. package/dist/commands/group-grants.js +3 -2
  265. package/dist/commands/groups.js +6 -5
  266. package/dist/commands/index-cmd.d.ts +19 -1
  267. package/dist/commands/index-cmd.js +74 -7
  268. package/dist/commands/integrations-api.d.ts +15 -10
  269. package/dist/commands/integrations-api.js +27 -22
  270. package/dist/commands/integrations-connect.d.ts +51 -13
  271. package/dist/commands/integrations-connect.js +86 -71
  272. package/dist/commands/integrations-core.d.ts +6 -6
  273. package/dist/commands/integrations-core.js +25 -11
  274. package/dist/commands/integrations-import.d.ts +1 -1
  275. package/dist/commands/integrations-import.js +43 -24
  276. package/dist/commands/integrations-manage.js +20 -13
  277. package/dist/commands/integrations.d.ts +8 -0
  278. package/dist/commands/integrations.js +94 -7
  279. package/dist/commands/lanes-accounts.d.ts +28 -0
  280. package/dist/commands/lanes-accounts.js +595 -0
  281. package/dist/commands/lanes-autopilot.d.ts +11 -0
  282. package/dist/commands/lanes-autopilot.js +336 -0
  283. package/dist/commands/lanes-checks.d.ts +51 -0
  284. package/dist/commands/lanes-checks.js +941 -0
  285. package/dist/commands/lanes-hold.d.ts +43 -0
  286. package/dist/commands/lanes-hold.js +655 -0
  287. package/dist/commands/lanes-keep-alive-audit.d.ts +10 -0
  288. package/dist/commands/lanes-keep-alive-audit.js +19 -0
  289. package/dist/commands/lanes-kpis.d.ts +11 -0
  290. package/dist/commands/lanes-kpis.js +34 -0
  291. package/dist/commands/lanes-message.d.ts +9 -0
  292. package/dist/commands/lanes-message.js +946 -0
  293. package/dist/commands/lanes-move.d.ts +12 -0
  294. package/dist/commands/lanes-move.js +397 -0
  295. package/dist/commands/lanes-questions.d.ts +36 -0
  296. package/dist/commands/lanes-questions.js +1005 -0
  297. package/dist/commands/lanes-report.d.ts +11 -0
  298. package/dist/commands/lanes-report.js +333 -0
  299. package/dist/commands/lanes-resume.d.ts +6 -0
  300. package/dist/commands/lanes-resume.js +564 -0
  301. package/dist/commands/lanes-review.d.ts +10 -0
  302. package/dist/commands/lanes-review.js +56 -0
  303. package/dist/commands/lanes-shared.d.ts +449 -0
  304. package/dist/commands/lanes-shared.js +170 -0
  305. package/dist/commands/lanes-stories.d.ts +15 -0
  306. package/dist/commands/lanes-stories.js +347 -0
  307. package/dist/commands/lanes-watch.d.ts +7 -0
  308. package/dist/commands/lanes-watch.js +216 -0
  309. package/dist/commands/lanes.d.ts +149 -0
  310. package/dist/commands/lanes.js +9013 -0
  311. package/dist/commands/login.js +49 -6
  312. package/dist/commands/mcp-registration.d.ts +32 -25
  313. package/dist/commands/mcp-registration.js +256 -23
  314. package/dist/commands/mcp-status.js +1 -0
  315. package/dist/commands/meetings.js +55 -34
  316. package/dist/commands/members.js +5 -1
  317. package/dist/commands/mesh.d.ts +11 -0
  318. package/dist/commands/mesh.js +1086 -76
  319. package/dist/commands/monitor.d.ts +58 -0
  320. package/dist/commands/monitor.js +980 -0
  321. package/dist/commands/onboard-bot-membership.d.ts +32 -0
  322. package/dist/commands/onboard-bot-membership.js +40 -0
  323. package/dist/commands/onboard-create-identity.d.ts +26 -0
  324. package/dist/commands/onboard-create-identity.js +23 -0
  325. package/dist/commands/onboard-identity-guard.d.ts +1 -1
  326. package/dist/commands/onboard.js +24 -5
  327. package/dist/commands/outpost-pruner.d.ts +3 -0
  328. package/dist/commands/outpost-pruner.js +125 -0
  329. package/dist/commands/pack-install.js +3 -1
  330. package/dist/commands/packs.js +11 -1
  331. package/dist/commands/people.d.ts +4 -0
  332. package/dist/commands/people.js +37 -3
  333. package/dist/commands/personal-connector-settings-flag.d.ts +4 -0
  334. package/dist/commands/personal-connector-settings-flag.js +7 -0
  335. package/dist/commands/personal-targeted-push-flag.d.ts +4 -0
  336. package/dist/commands/personal-targeted-push-flag.js +7 -0
  337. package/dist/commands/personal-targeted-push-paths.d.ts +3 -0
  338. package/dist/commands/personal-targeted-push-paths.js +67 -0
  339. package/dist/commands/publish.d.ts +8 -1
  340. package/dist/commands/publish.js +17 -4
  341. package/dist/commands/reindex.js +56 -6
  342. package/dist/commands/report.d.ts +19 -0
  343. package/dist/commands/report.js +537 -0
  344. package/dist/commands/rescue.d.ts +4 -0
  345. package/dist/commands/rescue.js +27 -17
  346. package/dist/commands/run-feature-telemetry.d.ts +3 -0
  347. package/dist/commands/run-feature-telemetry.js +6 -0
  348. package/dist/commands/run.js +18 -4
  349. package/dist/commands/safe-extract.d.ts +11 -2
  350. package/dist/commands/safe-extract.js +36 -8
  351. package/dist/commands/secrets.d.ts +20 -2
  352. package/dist/commands/secrets.js +175 -71
  353. package/dist/commands/skill.d.ts +35 -4
  354. package/dist/commands/skill.js +357 -18
  355. package/dist/commands/staff/reset-test-account.d.ts +110 -0
  356. package/dist/commands/staff/reset-test-account.js +268 -0
  357. package/dist/commands/staff/test-account.d.ts +51 -0
  358. package/dist/commands/staff/test-account.js +196 -0
  359. package/dist/commands/sync-mode.d.ts +11 -0
  360. package/dist/commands/sync-mode.js +30 -0
  361. package/dist/commands/sync-narrow.js +36 -5
  362. package/dist/commands/team-sync.js +71 -10
  363. package/dist/commands/update.js +6 -0
  364. package/dist/commands/vault-retention-flag.d.ts +3 -0
  365. package/dist/commands/vault-retention-flag.js +9 -0
  366. package/dist/commands/vault-retention.d.ts +11 -0
  367. package/dist/commands/vault-retention.js +69 -0
  368. package/dist/commands/version.d.ts +10 -0
  369. package/dist/commands/version.js +11 -0
  370. package/dist/commands/whoami.d.ts +22 -0
  371. package/dist/commands/whoami.js +137 -4
  372. package/dist/commands/workers.d.ts +2 -14
  373. package/dist/commands/workers.js +7 -10
  374. package/dist/fast-core.d.ts +7 -7
  375. package/dist/fast-core.js +91 -24
  376. package/dist/fast-scaffold.d.ts +86 -0
  377. package/dist/fast-scaffold.js +381 -0
  378. package/dist/index.d.ts +3 -4
  379. package/dist/index.js +59 -9
  380. package/dist/lanes-drain-hook.d.ts +14 -0
  381. package/dist/lanes-drain-hook.js +203 -0
  382. package/dist/lazy-commands.d.ts +20 -44
  383. package/dist/lazy-commands.js +60 -58
  384. package/dist/lib/agent-kit/adopt-identity.d.ts +27 -0
  385. package/dist/lib/agent-kit/adopt-identity.js +60 -0
  386. package/dist/lib/agent-kit/attachment-download.d.ts +24 -0
  387. package/dist/lib/agent-kit/attachment-download.js +47 -0
  388. package/dist/lib/agent-kit/creds.d.ts +106 -0
  389. package/dist/lib/agent-kit/creds.js +163 -0
  390. package/dist/lib/agent-kit/fallback.d.ts +78 -0
  391. package/dist/lib/agent-kit/fallback.js +210 -0
  392. package/dist/lib/agent-kit/inbox-state.d.ts +83 -0
  393. package/dist/lib/agent-kit/inbox-state.js +159 -0
  394. package/dist/lib/agent-kit/kit-config.d.ts +56 -0
  395. package/dist/lib/agent-kit/kit-config.js +65 -0
  396. package/dist/lib/agent-kit/log.d.ts +16 -0
  397. package/dist/lib/agent-kit/log.js +46 -0
  398. package/dist/lib/agent-kit/mcp/attachments.d.ts +126 -0
  399. package/dist/lib/agent-kit/mcp/attachments.js +222 -0
  400. package/dist/lib/agent-kit/mcp/jsonrpc.d.ts +75 -0
  401. package/dist/lib/agent-kit/mcp/jsonrpc.js +164 -0
  402. package/dist/lib/agent-kit/mcp/tools.d.ts +64 -0
  403. package/dist/lib/agent-kit/mcp/tools.js +397 -0
  404. package/dist/lib/agent-kit/paths.d.ts +65 -0
  405. package/dist/lib/agent-kit/paths.js +118 -0
  406. package/dist/lib/agent-kit/private-file.d.ts +29 -0
  407. package/dist/lib/agent-kit/private-file.js +91 -0
  408. package/dist/lib/agent-kit/run/heartbeat.d.ts +72 -0
  409. package/dist/lib/agent-kit/run/heartbeat.js +128 -0
  410. package/dist/lib/agent-kit/run/inbox.d.ts +76 -0
  411. package/dist/lib/agent-kit/run/inbox.js +205 -0
  412. package/dist/lib/agent-kit/run/supervisor.d.ts +35 -0
  413. package/dist/lib/agent-kit/run/supervisor.js +85 -0
  414. package/dist/lib/agent-kit/run/sync.d.ts +33 -0
  415. package/dist/lib/agent-kit/run/sync.js +58 -0
  416. package/dist/lib/agent-kit/services.d.ts +31 -0
  417. package/dist/lib/agent-kit/services.js +55 -0
  418. package/dist/lib/agent-kit/skills.d.ts +18 -0
  419. package/dist/lib/agent-kit/skills.js +151 -0
  420. package/dist/lib/agent-kit/wake.d.ts +83 -0
  421. package/dist/lib/agent-kit/wake.js +243 -0
  422. package/dist/lib/agents/model-catalog.d.ts +62 -0
  423. package/dist/lib/agents/model-catalog.js +275 -0
  424. package/dist/lib/auth-login-provider-state.d.ts +8 -0
  425. package/dist/lib/auth-login-provider-state.js +63 -0
  426. package/dist/lib/aws-sdk-node-warning-output.d.ts +12 -0
  427. package/dist/lib/aws-sdk-node-warning-output.js +22 -0
  428. package/dist/lib/billing/free-month.d.ts +18 -0
  429. package/dist/lib/billing/free-month.js +31 -0
  430. package/dist/lib/billing/plan-limit-refusals.d.ts +69 -0
  431. package/dist/lib/billing/plan-limit-refusals.js +187 -0
  432. package/dist/lib/billing/plan-limit-upgrade-url.d.ts +11 -0
  433. package/dist/lib/billing/plan-limit-upgrade-url.js +66 -0
  434. package/dist/lib/billing/plan-lock.d.ts +143 -0
  435. package/dist/lib/billing/plan-lock.js +439 -0
  436. package/dist/lib/bot/api.d.ts +349 -0
  437. package/dist/lib/bot/api.js +316 -0
  438. package/dist/lib/bot/attachments.d.ts +45 -0
  439. package/dist/lib/bot/attachments.js +89 -0
  440. package/dist/lib/bot/cli-update.d.ts +138 -0
  441. package/dist/lib/bot/cli-update.js +278 -0
  442. package/dist/lib/bot/company-bind.d.ts +27 -0
  443. package/dist/lib/bot/company-bind.js +62 -0
  444. package/dist/lib/bot/config.d.ts +153 -0
  445. package/dist/lib/bot/config.js +233 -0
  446. package/dist/lib/bot/continuity-download.d.ts +28 -0
  447. package/dist/lib/bot/continuity-download.js +75 -0
  448. package/dist/lib/bot/continuity-install.d.ts +14 -0
  449. package/dist/lib/bot/continuity-install.js +101 -0
  450. package/dist/lib/bot/continuity.d.ts +67 -0
  451. package/dist/lib/bot/continuity.js +301 -0
  452. package/dist/lib/bot/creds.d.ts +24 -0
  453. package/dist/lib/bot/creds.js +51 -0
  454. package/dist/lib/bot/daemon.d.ts +173 -0
  455. package/dist/lib/bot/daemon.js +552 -0
  456. package/dist/lib/bot/inbox-poll-backoff-flag.d.ts +24 -0
  457. package/dist/lib/bot/inbox-poll-backoff-flag.js +135 -0
  458. package/dist/lib/bot/inbox-state.d.ts +18 -0
  459. package/dist/lib/bot/inbox-state.js +51 -0
  460. package/dist/lib/bot/index.d.ts +23 -0
  461. package/dist/lib/bot/index.js +23 -0
  462. package/dist/lib/bot/inflight.d.ts +119 -0
  463. package/dist/lib/bot/inflight.js +83 -0
  464. package/dist/lib/bot/job-completions.d.ts +89 -0
  465. package/dist/lib/bot/job-completions.js +132 -0
  466. package/dist/lib/bot/job-quiet-flag.d.ts +4 -0
  467. package/dist/lib/bot/job-quiet-flag.js +14 -0
  468. package/dist/lib/bot/job-run.d.ts +114 -0
  469. package/dist/lib/bot/job-run.js +266 -0
  470. package/dist/lib/bot/local-config.d.ts +61 -0
  471. package/dist/lib/bot/local-config.js +145 -0
  472. package/dist/lib/bot/local-jobs.d.ts +89 -0
  473. package/dist/lib/bot/local-jobs.js +459 -0
  474. package/dist/lib/bot/local-name.d.ts +54 -0
  475. package/dist/lib/bot/local-name.js +114 -0
  476. package/dist/lib/bot/log.d.ts +13 -0
  477. package/dist/lib/bot/log.js +59 -0
  478. package/dist/lib/bot/owner-context.d.ts +79 -0
  479. package/dist/lib/bot/owner-context.js +175 -0
  480. package/dist/lib/bot/paths.d.ts +76 -0
  481. package/dist/lib/bot/paths.js +131 -0
  482. package/dist/lib/bot/progress.d.ts +132 -0
  483. package/dist/lib/bot/progress.js +289 -0
  484. package/dist/lib/bot/promote.d.ts +16 -0
  485. package/dist/lib/bot/promote.js +106 -0
  486. package/dist/lib/bot/promotion-hold.d.ts +24 -0
  487. package/dist/lib/bot/promotion-hold.js +103 -0
  488. package/dist/lib/bot/promotion-receipt.d.ts +9 -0
  489. package/dist/lib/bot/promotion-receipt.js +56 -0
  490. package/dist/lib/bot/promotion-upload.d.ts +16 -0
  491. package/dist/lib/bot/promotion-upload.js +80 -0
  492. package/dist/lib/bot/prompt.d.ts +136 -0
  493. package/dist/lib/bot/prompt.js +433 -0
  494. package/dist/lib/bot/room-policy.d.ts +63 -0
  495. package/dist/lib/bot/room-policy.js +91 -0
  496. package/dist/lib/bot/run.d.ts +219 -0
  497. package/dist/lib/bot/run.js +1881 -0
  498. package/dist/lib/bot/runnable.d.ts +51 -0
  499. package/dist/lib/bot/runnable.js +65 -0
  500. package/dist/lib/bot/runtime/claude.d.ts +50 -0
  501. package/dist/lib/bot/runtime/claude.js +170 -0
  502. package/dist/lib/bot/runtime/codex.d.ts +28 -0
  503. package/dist/lib/bot/runtime/codex.js +153 -0
  504. package/dist/lib/bot/runtime/grok-acp.d.ts +40 -0
  505. package/dist/lib/bot/runtime/grok-acp.js +265 -0
  506. package/dist/lib/bot/runtime/grok.d.ts +41 -0
  507. package/dist/lib/bot/runtime/grok.js +169 -0
  508. package/dist/lib/bot/runtime/index.d.ts +36 -0
  509. package/dist/lib/bot/runtime/index.js +417 -0
  510. package/dist/lib/bot/runtime/messages-stream.d.ts +56 -0
  511. package/dist/lib/bot/runtime/messages-stream.js +194 -0
  512. package/dist/lib/bot/runtime/sanitize.d.ts +18 -0
  513. package/dist/lib/bot/runtime/sanitize.js +28 -0
  514. package/dist/lib/bot/runtime/types.d.ts +159 -0
  515. package/dist/lib/bot/runtime/types.js +51 -0
  516. package/dist/lib/bot/runtime/windows.d.ts +10 -0
  517. package/dist/lib/bot/runtime/windows.js +53 -0
  518. package/dist/lib/bot/runtime-sign-in.d.ts +24 -0
  519. package/dist/lib/bot/runtime-sign-in.js +31 -0
  520. package/dist/lib/bot/scaffold.d.ts +38 -0
  521. package/dist/lib/bot/scaffold.js +94 -0
  522. package/dist/lib/bot/self-heal.d.ts +52 -0
  523. package/dist/lib/bot/self-heal.js +79 -0
  524. package/dist/lib/bot/self-process.d.ts +19 -0
  525. package/dist/lib/bot/self-process.js +35 -0
  526. package/dist/lib/bot/session.d.ts +19 -0
  527. package/dist/lib/bot/session.js +39 -0
  528. package/dist/lib/bot/setup-explain.d.ts +64 -0
  529. package/dist/lib/bot/setup-explain.js +141 -0
  530. package/dist/lib/bot/split.d.ts +32 -0
  531. package/dist/lib/bot/split.js +241 -0
  532. package/dist/lib/bot/status.d.ts +57 -0
  533. package/dist/lib/bot/status.js +66 -0
  534. package/dist/lib/bot/worker-source.d.ts +66 -0
  535. package/dist/lib/bot/worker-source.js +283 -0
  536. package/dist/lib/checkpoint-ontology/aliases.d.ts +17 -0
  537. package/dist/lib/checkpoint-ontology/aliases.js +44 -0
  538. package/dist/lib/checkpoint-ontology/apply.d.ts +110 -0
  539. package/dist/lib/checkpoint-ontology/apply.js +777 -0
  540. package/dist/lib/checkpoint-ontology/company-brief.d.ts +18 -0
  541. package/dist/lib/checkpoint-ontology/company-brief.js +337 -0
  542. package/dist/lib/checkpoint-ontology/company.d.ts +44 -0
  543. package/dist/lib/checkpoint-ontology/company.js +118 -0
  544. package/dist/lib/checkpoint-ontology/drop-aliases.d.ts +41 -0
  545. package/dist/lib/checkpoint-ontology/drop-aliases.js +76 -0
  546. package/dist/lib/checkpoint-ontology/entity-file.d.ts +109 -0
  547. package/dist/lib/checkpoint-ontology/entity-file.js +371 -0
  548. package/dist/lib/checkpoint-ontology/identity.d.ts +38 -0
  549. package/dist/lib/checkpoint-ontology/identity.js +95 -0
  550. package/dist/lib/checkpoint-ontology/merge-copies.d.ts +199 -0
  551. package/dist/lib/checkpoint-ontology/merge-copies.js +1086 -0
  552. package/dist/lib/checkpoint-ontology/multi-writer.d.ts +101 -0
  553. package/dist/lib/checkpoint-ontology/multi-writer.js +394 -0
  554. package/dist/lib/checkpoint-ontology/plan.d.ts +193 -0
  555. package/dist/lib/checkpoint-ontology/plan.js +504 -0
  556. package/dist/lib/checkpoint-ontology/queued-touches.d.ts +29 -0
  557. package/dist/lib/checkpoint-ontology/queued-touches.js +193 -0
  558. package/dist/lib/checkpoint-ontology/sync-client.d.ts +38 -0
  559. package/dist/lib/checkpoint-ontology/sync-client.js +84 -0
  560. package/dist/lib/checkpoint-ontology/tree.d.ts +55 -0
  561. package/dist/lib/checkpoint-ontology/tree.js +198 -0
  562. package/dist/lib/company-errors-sdk-warning-flag.d.ts +5 -0
  563. package/dist/lib/company-errors-sdk-warning-flag.js +8 -0
  564. package/dist/lib/company-skill-wrapper.d.ts +1 -0
  565. package/dist/lib/company-skill-wrapper.js +121 -29
  566. package/dist/lib/core-utils/codex-skill-bridge.d.ts +2 -1
  567. package/dist/lib/core-utils/common.d.ts +0 -1
  568. package/dist/lib/core-utils/common.js +0 -9
  569. package/dist/lib/core-utils/hook-timeout-debug-context-flag.d.ts +20 -0
  570. package/dist/lib/core-utils/hook-timeout-debug-context-flag.js +81 -0
  571. package/dist/lib/core-utils/jq-json-serializer.d.ts +5 -0
  572. package/dist/lib/core-utils/jq-json-serializer.js +10 -0
  573. package/dist/lib/core-utils/qmd-reindex-after-sync.d.ts +14 -1
  574. package/dist/lib/core-utils/qmd-reindex-after-sync.js +101 -17
  575. package/dist/lib/core-utils/secret-patterns.d.ts +43 -0
  576. package/dist/lib/core-utils/secret-patterns.js +34 -0
  577. package/dist/lib/core-utils/sentry-report.d.ts +114 -0
  578. package/dist/lib/core-utils/sentry-report.js +1055 -0
  579. package/dist/lib/core-utils/soft-timeout.js +1 -1
  580. package/dist/lib/core-utils/timeout-guard-native.d.ts +7 -0
  581. package/dist/lib/core-utils/timeout-guard-native.js +40 -0
  582. package/dist/lib/core-utils/timeout-guard.d.ts +3 -3
  583. package/dist/lib/core-utils/timeout-guard.js +28 -13
  584. package/dist/lib/core-utils/token-usage-report.js +17 -3
  585. package/dist/lib/core-utils/worktree-resume.d.ts +20 -0
  586. package/dist/lib/core-utils/worktree-resume.js +1198 -0
  587. package/dist/lib/daemon/catalog.d.ts +134 -0
  588. package/dist/lib/daemon/catalog.js +358 -0
  589. package/dist/lib/daemon/config.d.ts +35 -0
  590. package/dist/lib/daemon/config.js +108 -0
  591. package/dist/lib/daemon/flag.d.ts +25 -0
  592. package/dist/lib/daemon/flag.js +59 -0
  593. package/dist/lib/daemon/handoff.d.ts +56 -0
  594. package/dist/lib/daemon/handoff.js +161 -0
  595. package/dist/lib/daemon/hq-cloud.d.ts +79 -0
  596. package/dist/lib/daemon/hq-cloud.js +183 -0
  597. package/dist/lib/daemon/install.d.ts +85 -0
  598. package/dist/lib/daemon/install.js +320 -0
  599. package/dist/lib/daemon/legacy-sync-env.d.ts +10 -0
  600. package/dist/lib/daemon/legacy-sync-env.js +58 -0
  601. package/dist/lib/daemon/legacy.d.ts +45 -0
  602. package/dist/lib/daemon/legacy.js +133 -0
  603. package/dist/lib/daemon/lock.d.ts +47 -0
  604. package/dist/lib/daemon/lock.js +138 -0
  605. package/dist/lib/daemon/machine-type.d.ts +50 -0
  606. package/dist/lib/daemon/machine-type.js +159 -0
  607. package/dist/lib/daemon/migrate.d.ts +77 -0
  608. package/dist/lib/daemon/migrate.js +265 -0
  609. package/dist/lib/daemon/paths.d.ts +24 -0
  610. package/dist/lib/daemon/paths.js +43 -0
  611. package/dist/lib/daemon/protocol-tail.d.ts +33 -0
  612. package/dist/lib/daemon/protocol-tail.js +131 -0
  613. package/dist/lib/daemon/remote-control.d.ts +74 -0
  614. package/dist/lib/daemon/remote-control.js +153 -0
  615. package/dist/lib/daemon/requests.d.ts +28 -0
  616. package/dist/lib/daemon/requests.js +65 -0
  617. package/dist/lib/daemon/run.d.ts +79 -0
  618. package/dist/lib/daemon/run.js +755 -0
  619. package/dist/lib/daemon/succession.d.ts +118 -0
  620. package/dist/lib/daemon/succession.js +263 -0
  621. package/dist/lib/daemon/supervisor.d.ts +132 -0
  622. package/dist/lib/daemon/supervisor.js +836 -0
  623. package/dist/lib/daemon/sync-runner.d.ts +58 -0
  624. package/dist/lib/daemon/sync-runner.js +277 -0
  625. package/dist/lib/daemon/tools.d.ts +52 -0
  626. package/dist/lib/daemon/tools.js +95 -0
  627. package/dist/lib/daemon/updater.d.ts +57 -0
  628. package/dist/lib/daemon/updater.js +163 -0
  629. package/dist/lib/db/control-plane.js +6 -0
  630. package/dist/lib/db/local.d.ts +0 -5
  631. package/dist/lib/db/local.js +1 -1
  632. package/dist/lib/db/migrate.d.ts +0 -12
  633. package/dist/lib/db/migrate.js +5 -5
  634. package/dist/lib/db/remote-sql.d.ts +2 -2
  635. package/dist/lib/db/remote-sql.js +3 -3
  636. package/dist/lib/db/sql.d.ts +0 -10
  637. package/dist/lib/db/sql.js +4 -8
  638. package/dist/lib/deploy-api.d.ts +5 -0
  639. package/dist/lib/deploy-api.js +21 -0
  640. package/dist/lib/deploy-apps.d.ts +13 -0
  641. package/dist/lib/deploy-apps.js +29 -0
  642. package/dist/lib/doctor/__testing__/fake-hq-tree.d.ts +1 -1
  643. package/dist/lib/doctor/__testing__/fake-hq-tree.js +1 -1
  644. package/dist/lib/doctor/__testing__/run-doctor.d.ts +8 -0
  645. package/dist/lib/doctor/__testing__/run-doctor.js +52 -0
  646. package/dist/lib/doctor/checks/bots.d.ts +13 -0
  647. package/dist/lib/doctor/checks/bots.js +189 -0
  648. package/dist/lib/doctor/checks/claude-wiring.js +70 -1
  649. package/dist/lib/doctor/checks/codex-wiring.d.ts +0 -4
  650. package/dist/lib/doctor/checks/codex-wiring.js +3 -35
  651. package/dist/lib/doctor/checks/grok-wiring.js +1 -34
  652. package/dist/lib/doctor/checks/integrations.js +11 -0
  653. package/dist/lib/doctor/checks/runtime-health.d.ts +4 -17
  654. package/dist/lib/doctor/checks/runtime-health.js +20 -7
  655. package/dist/lib/doctor/checks/scaffold-cli-floor.d.ts +6 -0
  656. package/dist/lib/doctor/checks/scaffold-cli-floor.js +73 -0
  657. package/dist/lib/doctor/checks/sync-health.d.ts +21 -0
  658. package/dist/lib/doctor/checks/sync-health.js +72 -2
  659. package/dist/lib/doctor/checks/sync-runtime.d.ts +11 -0
  660. package/dist/lib/doctor/checks/sync-runtime.js +216 -0
  661. package/dist/lib/doctor/checks/work-context.js +20 -6
  662. package/dist/lib/doctor/client-health-flag-token.d.ts +15 -0
  663. package/dist/lib/doctor/client-health-flag-token.js +66 -0
  664. package/dist/lib/doctor/client-health-reason-codes-flag.d.ts +27 -0
  665. package/dist/lib/doctor/client-health-reason-codes-flag.js +106 -0
  666. package/dist/lib/doctor/compat.d.ts +0 -16
  667. package/dist/lib/doctor/compat.js +4 -3
  668. package/dist/lib/doctor/deep/effects.js +1 -3
  669. package/dist/lib/doctor/deep/executor.d.ts +4 -10
  670. package/dist/lib/doctor/deep/executor.js +1 -1
  671. package/dist/lib/doctor/deep/parity.d.ts +2 -29
  672. package/dist/lib/doctor/deep/parity.js +7 -7
  673. package/dist/lib/doctor/deep/sandbox.d.ts +7 -25
  674. package/dist/lib/doctor/deep/sandbox.js +5 -7
  675. package/dist/lib/doctor/fix/apply.d.ts +79 -8
  676. package/dist/lib/doctor/fix/apply.js +292 -80
  677. package/dist/lib/doctor/fix/json-output.d.ts +28 -0
  678. package/dist/lib/doctor/fix/json-output.js +33 -0
  679. package/dist/lib/doctor/fix/refresh-sync-outcome.d.ts +12 -0
  680. package/dist/lib/doctor/fix/refresh-sync-outcome.js +25 -0
  681. package/dist/lib/doctor/fix/remediation.d.ts +14 -6
  682. package/dist/lib/doctor/fix/remediation.js +49 -9
  683. package/dist/lib/doctor/fixtures/schema.js +1 -3
  684. package/dist/lib/doctor/json-output.d.ts +17 -1
  685. package/dist/lib/doctor/json-output.js +7 -2
  686. package/dist/lib/doctor/platform.d.ts +0 -26
  687. package/dist/lib/doctor/platform.js +5 -5
  688. package/dist/lib/doctor/registry.d.ts +14 -0
  689. package/dist/lib/doctor/registry.js +71 -0
  690. package/dist/lib/doctor/report.js +1 -1
  691. package/dist/lib/doctor/shared.d.ts +8 -0
  692. package/dist/lib/doctor/shared.js +38 -0
  693. package/dist/lib/doctor/stray-gate-entries.d.ts +35 -0
  694. package/dist/lib/doctor/stray-gate-entries.js +83 -0
  695. package/dist/lib/doctor/types.d.ts +5 -0
  696. package/dist/lib/doctor/types.js +20 -0
  697. package/dist/lib/first-sync-next-step.d.ts +34 -0
  698. package/dist/lib/first-sync-next-step.js +179 -0
  699. package/dist/lib/flag-registry-endpoint.d.ts +5 -0
  700. package/dist/lib/flag-registry-endpoint.js +9 -0
  701. package/dist/lib/flag-registry-worker-source.generated.d.ts +2 -0
  702. package/dist/lib/flag-registry-worker-source.generated.js +3 -0
  703. package/dist/lib/flag-registry-worker.js +12 -1
  704. package/dist/lib/flag-registry.d.ts +26 -6
  705. package/dist/lib/flag-registry.js +133 -16
  706. package/dist/lib/flag-snapshot-file.d.ts +20 -0
  707. package/dist/lib/flag-snapshot-file.js +91 -0
  708. package/dist/lib/heartbeat-identity.d.ts +30 -0
  709. package/dist/lib/heartbeat-identity.js +76 -0
  710. package/dist/lib/index-render/companies.d.ts +4 -1
  711. package/dist/lib/index-render/companies.js +66 -3
  712. package/dist/lib/index-render/company-knowledge.js +80 -17
  713. package/dist/lib/index-render/index.d.ts +1 -0
  714. package/dist/lib/index-render/index.js +2 -1
  715. package/dist/lib/index-render/projects.js +82 -5
  716. package/dist/lib/index-render/shared.d.ts +13 -1
  717. package/dist/lib/index-render/shared.js +41 -2
  718. package/dist/lib/lanes/account-home.d.ts +8 -0
  719. package/dist/lib/lanes/account-home.js +10 -0
  720. package/dist/lib/lanes/accounts.d.ts +117 -0
  721. package/dist/lib/lanes/accounts.js +366 -0
  722. package/dist/lib/lanes/admission-host.d.ts +22 -0
  723. package/dist/lib/lanes/admission-host.js +37 -0
  724. package/dist/lib/lanes/admission.d.ts +26 -0
  725. package/dist/lib/lanes/admission.js +210 -0
  726. package/dist/lib/lanes/approval-gate.d.ts +8 -0
  727. package/dist/lib/lanes/approval-gate.js +90 -0
  728. package/dist/lib/lanes/autopilot-metrics.d.ts +99 -0
  729. package/dist/lib/lanes/autopilot-metrics.js +301 -0
  730. package/dist/lib/lanes/autopilot-registry.d.ts +62 -0
  731. package/dist/lib/lanes/autopilot-registry.js +192 -0
  732. package/dist/lib/lanes/autopilot.d.ts +137 -0
  733. package/dist/lib/lanes/autopilot.js +1291 -0
  734. package/dist/lib/lanes/blocker-freshness.d.ts +31 -0
  735. package/dist/lib/lanes/blocker-freshness.js +168 -0
  736. package/dist/lib/lanes/checked-company-path.d.ts +3 -0
  737. package/dist/lib/lanes/checked-company-path.js +39 -0
  738. package/dist/lib/lanes/claude-balance.d.ts +97 -0
  739. package/dist/lib/lanes/claude-balance.js +319 -0
  740. package/dist/lib/lanes/compaction.d.ts +110 -0
  741. package/dist/lib/lanes/compaction.js +293 -0
  742. package/dist/lib/lanes/config.d.ts +94 -0
  743. package/dist/lib/lanes/config.js +606 -0
  744. package/dist/lib/lanes/constants.d.ts +3 -0
  745. package/dist/lib/lanes/constants.js +3 -0
  746. package/dist/lib/lanes/delivery-core.d.ts +15 -0
  747. package/dist/lib/lanes/delivery-core.js +21 -0
  748. package/dist/lib/lanes/delivery.d.ts +180 -0
  749. package/dist/lib/lanes/delivery.js +443 -0
  750. package/dist/lib/lanes/disk-guard.d.ts +65 -0
  751. package/dist/lib/lanes/disk-guard.js +172 -0
  752. package/dist/lib/lanes/dropbox.d.ts +129 -0
  753. package/dist/lib/lanes/dropbox.js +601 -0
  754. package/dist/lib/lanes/effort.d.ts +51 -0
  755. package/dist/lib/lanes/effort.js +113 -0
  756. package/dist/lib/lanes/envelope-repair-dispatch.d.ts +26 -0
  757. package/dist/lib/lanes/envelope-repair-dispatch.js +74 -0
  758. package/dist/lib/lanes/errors.d.ts +39 -0
  759. package/dist/lib/lanes/errors.js +72 -0
  760. package/dist/lib/lanes/flag-keys.d.ts +25 -0
  761. package/dist/lib/lanes/flag-keys.js +25 -0
  762. package/dist/lib/lanes/grants.d.ts +30 -0
  763. package/dist/lib/lanes/grants.js +171 -0
  764. package/dist/lib/lanes/hire-grant-dispatch.d.ts +29 -0
  765. package/dist/lib/lanes/hire-grant-dispatch.js +315 -0
  766. package/dist/lib/lanes/hooks-install.d.ts +82 -0
  767. package/dist/lib/lanes/hooks-install.js +555 -0
  768. package/dist/lib/lanes/host-capacity.d.ts +69 -0
  769. package/dist/lib/lanes/host-capacity.js +254 -0
  770. package/dist/lib/lanes/hq-root.d.ts +19 -0
  771. package/dist/lib/lanes/hq-root.js +28 -0
  772. package/dist/lib/lanes/index.d.ts +76 -0
  773. package/dist/lib/lanes/index.js +42 -0
  774. package/dist/lib/lanes/keep-alive-audit.d.ts +47 -0
  775. package/dist/lib/lanes/keep-alive-audit.js +370 -0
  776. package/dist/lib/lanes/keep-alive.d.ts +68 -0
  777. package/dist/lib/lanes/keep-alive.js +343 -0
  778. package/dist/lib/lanes/kr-freshness.d.ts +76 -0
  779. package/dist/lib/lanes/kr-freshness.js +413 -0
  780. package/dist/lib/lanes/lane-company.d.ts +10 -0
  781. package/dist/lib/lanes/lane-company.js +41 -0
  782. package/dist/lib/lanes/liveness.d.ts +108 -0
  783. package/dist/lib/lanes/liveness.js +396 -0
  784. package/dist/lib/lanes/machine-identity.d.ts +34 -0
  785. package/dist/lib/lanes/machine-identity.js +92 -0
  786. package/dist/lib/lanes/manager-status-gate.d.ts +17 -0
  787. package/dist/lib/lanes/manager-status-gate.js +133 -0
  788. package/dist/lib/lanes/merge-command.d.ts +15 -0
  789. package/dist/lib/lanes/merge-command.js +629 -0
  790. package/dist/lib/lanes/mesh-events.d.ts +127 -0
  791. package/dist/lib/lanes/mesh-events.js +564 -0
  792. package/dist/lib/lanes/message-replay.d.ts +21 -0
  793. package/dist/lib/lanes/message-replay.js +122 -0
  794. package/dist/lib/lanes/models.d.ts +86 -0
  795. package/dist/lib/lanes/models.js +234 -0
  796. package/dist/lib/lanes/monitor.d.ts +48 -0
  797. package/dist/lib/lanes/monitor.js +428 -0
  798. package/dist/lib/lanes/move-account.d.ts +56 -0
  799. package/dist/lib/lanes/move-account.js +193 -0
  800. package/dist/lib/lanes/orphans.d.ts +25 -0
  801. package/dist/lib/lanes/orphans.js +102 -0
  802. package/dist/lib/lanes/outpost-dispatch.d.ts +156 -0
  803. package/dist/lib/lanes/outpost-dispatch.js +293 -0
  804. package/dist/lib/lanes/outpost-hire-cache.d.ts +22 -0
  805. package/dist/lib/lanes/outpost-hire-cache.js +153 -0
  806. package/dist/lib/lanes/outpost-identity.d.ts +33 -0
  807. package/dist/lib/lanes/outpost-identity.js +59 -0
  808. package/dist/lib/lanes/outpost-profile-repin.d.ts +17 -0
  809. package/dist/lib/lanes/outpost-profile-repin.js +84 -0
  810. package/dist/lib/lanes/outpost-pruner-install.d.ts +37 -0
  811. package/dist/lib/lanes/outpost-pruner-install.js +238 -0
  812. package/dist/lib/lanes/outpost-registry-worker-approval.d.ts +18 -0
  813. package/dist/lib/lanes/outpost-registry-worker-approval.js +109 -0
  814. package/dist/lib/lanes/outpost-snapshot-memo.d.ts +6 -0
  815. package/dist/lib/lanes/outpost-snapshot-memo.js +14 -0
  816. package/dist/lib/lanes/outpost-worktree-pruner-flag.d.ts +19 -0
  817. package/dist/lib/lanes/outpost-worktree-pruner-flag.js +86 -0
  818. package/dist/lib/lanes/outpost-worktree-pruner.d.ts +62 -0
  819. package/dist/lib/lanes/outpost-worktree-pruner.js +1201 -0
  820. package/dist/lib/lanes/profile.d.ts +69 -0
  821. package/dist/lib/lanes/profile.js +552 -0
  822. package/dist/lib/lanes/provider-rejection.d.ts +86 -0
  823. package/dist/lib/lanes/provider-rejection.js +286 -0
  824. package/dist/lib/lanes/questions.d.ts +90 -0
  825. package/dist/lib/lanes/questions.js +384 -0
  826. package/dist/lib/lanes/quota.d.ts +134 -0
  827. package/dist/lib/lanes/quota.js +471 -0
  828. package/dist/lib/lanes/reconcile-install.d.ts +90 -0
  829. package/dist/lib/lanes/reconcile-install.js +257 -0
  830. package/dist/lib/lanes/reconcile.d.ts +161 -0
  831. package/dist/lib/lanes/reconcile.js +3343 -0
  832. package/dist/lib/lanes/registry-flag.d.ts +35 -0
  833. package/dist/lib/lanes/registry-flag.js +164 -0
  834. package/dist/lib/lanes/registry-persona.d.ts +20 -0
  835. package/dist/lib/lanes/registry-persona.js +329 -0
  836. package/dist/lib/lanes/registry.d.ts +122 -0
  837. package/dist/lib/lanes/registry.js +570 -0
  838. package/dist/lib/lanes/reviews.d.ts +38 -0
  839. package/dist/lib/lanes/reviews.js +395 -0
  840. package/dist/lib/lanes/runaway-tool-guard.d.ts +38 -0
  841. package/dist/lib/lanes/runaway-tool-guard.js +284 -0
  842. package/dist/lib/lanes/session-relink.d.ts +25 -0
  843. package/dist/lib/lanes/session-relink.js +216 -0
  844. package/dist/lib/lanes/spawn.d.ts +355 -0
  845. package/dist/lib/lanes/spawn.js +2668 -0
  846. package/dist/lib/lanes/ssm-command-context.d.ts +12 -0
  847. package/dist/lib/lanes/ssm-command-context.js +52 -0
  848. package/dist/lib/lanes/store.d.ts +91 -0
  849. package/dist/lib/lanes/store.js +1822 -0
  850. package/dist/lib/lanes/stories.d.ts +23 -0
  851. package/dist/lib/lanes/stories.js +92 -0
  852. package/dist/lib/lanes/story-ledger.d.ts +80 -0
  853. package/dist/lib/lanes/story-ledger.js +815 -0
  854. package/dist/lib/lanes/story-switch.d.ts +21 -0
  855. package/dist/lib/lanes/story-switch.js +75 -0
  856. package/dist/lib/lanes/text-scan.d.ts +11 -0
  857. package/dist/lib/lanes/text-scan.js +103 -0
  858. package/dist/lib/lanes/throttle.d.ts +116 -0
  859. package/dist/lib/lanes/throttle.js +437 -0
  860. package/dist/lib/lanes/timestamp.d.ts +3 -0
  861. package/dist/lib/lanes/timestamp.js +26 -0
  862. package/dist/lib/lanes/tracker-checks.d.ts +77 -0
  863. package/dist/lib/lanes/tracker-checks.js +134 -0
  864. package/dist/lib/lanes/tracker-report-state.d.ts +10 -0
  865. package/dist/lib/lanes/tracker-report-state.js +124 -0
  866. package/dist/lib/lanes/tracker-report.d.ts +203 -0
  867. package/dist/lib/lanes/tracker-report.js +522 -0
  868. package/dist/lib/lanes/tracker-store.d.ts +18 -0
  869. package/dist/lib/lanes/tracker-store.js +106 -0
  870. package/dist/lib/lanes/types.d.ts +1030 -0
  871. package/dist/lib/lanes/types.js +418 -0
  872. package/dist/lib/lanes/wait.d.ts +39 -0
  873. package/dist/lib/lanes/wait.js +159 -0
  874. package/dist/lib/lanes/watch.d.ts +39 -0
  875. package/dist/lib/lanes/watch.js +249 -0
  876. package/dist/lib/lanes/watcher-main.d.ts +11 -0
  877. package/dist/lib/lanes/watcher-main.js +108 -0
  878. package/dist/lib/lanes/watcher.d.ts +287 -0
  879. package/dist/lib/lanes/watcher.js +1972 -0
  880. package/dist/lib/mesh/api.d.ts +103 -10
  881. package/dist/lib/mesh/api.js +334 -64
  882. package/dist/lib/mesh/client.d.ts +3 -2
  883. package/dist/lib/mesh/client.js +26 -7
  884. package/dist/lib/mesh/denial-codes.d.ts +5 -0
  885. package/dist/lib/mesh/denial-codes.js +14 -0
  886. package/dist/lib/mesh/live/backfill-held.d.ts +67 -16
  887. package/dist/lib/mesh/live/backfill-held.js +415 -61
  888. package/dist/lib/mesh/live/backoff.d.ts +2 -2
  889. package/dist/lib/mesh/live/backoff.js +16 -3
  890. package/dist/lib/mesh/live/daemon/board-refresh.d.ts +7 -1
  891. package/dist/lib/mesh/live/daemon/board-refresh.js +78 -30
  892. package/dist/lib/mesh/live/daemon/config.d.ts +36 -0
  893. package/dist/lib/mesh/live/daemon/config.js +120 -0
  894. package/dist/lib/mesh/live/daemon/credentials.d.ts +64 -10
  895. package/dist/lib/mesh/live/daemon/credentials.js +270 -20
  896. package/dist/lib/mesh/live/daemon/doctor.d.ts +53 -0
  897. package/dist/lib/mesh/live/daemon/doctor.js +190 -6
  898. package/dist/lib/mesh/live/daemon/index.d.ts +13 -10
  899. package/dist/lib/mesh/live/daemon/index.js +7 -6
  900. package/dist/lib/mesh/live/daemon/install.d.ts +255 -1
  901. package/dist/lib/mesh/live/daemon/install.js +811 -13
  902. package/dist/lib/mesh/live/daemon/legacy-listen.d.ts +43 -0
  903. package/dist/lib/mesh/live/daemon/legacy-listen.js +89 -0
  904. package/dist/lib/mesh/live/daemon/live-cache.d.ts +26 -0
  905. package/dist/lib/mesh/live/daemon/live-cache.js +116 -0
  906. package/dist/lib/mesh/live/daemon/mqtt-events.d.ts +7 -0
  907. package/dist/lib/mesh/live/daemon/mqtt-events.js +2 -0
  908. package/dist/lib/mesh/live/daemon/mqtt-events.test-d.d.ts +2 -0
  909. package/dist/lib/mesh/live/daemon/mqtt-events.test-d.js +10 -0
  910. package/dist/lib/mesh/live/daemon/paths.d.ts +2 -0
  911. package/dist/lib/mesh/live/daemon/paths.js +2 -0
  912. package/dist/lib/mesh/live/daemon/presence.d.ts +24 -5
  913. package/dist/lib/mesh/live/daemon/presence.js +79 -10
  914. package/dist/lib/mesh/live/daemon/run.d.ts +48 -2
  915. package/dist/lib/mesh/live/daemon/run.js +485 -33
  916. package/dist/lib/mesh/live/daemon/state.d.ts +19 -2
  917. package/dist/lib/mesh/live/daemon/state.js +34 -2
  918. package/dist/lib/mesh/live/daemon/transcript-watch.d.ts +45 -9
  919. package/dist/lib/mesh/live/daemon/transcript-watch.js +227 -31
  920. package/dist/lib/mesh/live/daemon/version-drift.d.ts +5 -0
  921. package/dist/lib/mesh/live/daemon/version-drift.js +47 -0
  922. package/dist/lib/mesh/live/daemon/work-subscribe.d.ts +32 -0
  923. package/dist/lib/mesh/live/daemon/work-subscribe.js +262 -0
  924. package/dist/lib/mesh/live/emit-client.d.ts +8 -0
  925. package/dist/lib/mesh/live/emit-client.js +23 -8
  926. package/dist/lib/mesh/live/emit-evidence.d.ts +19 -0
  927. package/dist/lib/mesh/live/emit-evidence.js +20 -2
  928. package/dist/lib/mesh/live/emit.d.ts +9 -0
  929. package/dist/lib/mesh/live/emit.js +28 -2
  930. package/dist/lib/mesh/live/enqueue.d.ts +5 -0
  931. package/dist/lib/mesh/live/enqueue.js +19 -0
  932. package/dist/lib/mesh/live/flush.d.ts +17 -5
  933. package/dist/lib/mesh/live/flush.js +391 -38
  934. package/dist/lib/mesh/live/format-spool-line.d.ts +5 -2
  935. package/dist/lib/mesh/live/format-spool-line.js +10 -0
  936. package/dist/lib/mesh/live/paths.d.ts +2 -0
  937. package/dist/lib/mesh/live/paths.js +4 -0
  938. package/dist/lib/mesh/live/report-summary.d.ts +45 -0
  939. package/dist/lib/mesh/live/report-summary.js +234 -0
  940. package/dist/lib/mesh/live/session-event.schema.json +24 -1
  941. package/dist/lib/mesh/live/session-events-client.d.ts +2 -0
  942. package/dist/lib/mesh/live/session-events-client.js +26 -0
  943. package/dist/lib/mesh/live/session-seq.d.ts +4 -0
  944. package/dist/lib/mesh/live/session-seq.js +33 -0
  945. package/dist/lib/mesh/live/spool.d.ts +19 -0
  946. package/dist/lib/mesh/live/spool.js +269 -3
  947. package/dist/lib/mesh/live/validate-session-event.d.ts +1 -1
  948. package/dist/lib/mesh/live/validate-session-event.js +1 -1
  949. package/dist/lib/mesh/project-board.d.ts +65 -0
  950. package/dist/lib/mesh/project-board.js +181 -0
  951. package/dist/lib/mesh/story-status.d.ts +22 -0
  952. package/dist/lib/mesh/story-status.js +49 -0
  953. package/dist/lib/monitor.d.ts +149 -0
  954. package/dist/lib/monitor.js +519 -0
  955. package/dist/lib/node-binary.d.ts +50 -0
  956. package/dist/lib/node-binary.js +133 -0
  957. package/dist/lib/notify-recipient.d.ts +7 -0
  958. package/dist/lib/notify-recipient.js +11 -0
  959. package/dist/lib/onboarding/checkpoint.d.ts +13 -0
  960. package/dist/lib/onboarding/checkpoint.js +44 -0
  961. package/dist/lib/onboarding/cli/onboard.d.ts +53 -0
  962. package/dist/lib/onboarding/cli/onboard.js +135 -0
  963. package/dist/lib/onboarding/cli/prompts.d.ts +28 -0
  964. package/dist/lib/onboarding/cli/prompts.js +83 -0
  965. package/dist/lib/onboarding/errors.d.ts +34 -0
  966. package/dist/lib/onboarding/errors.js +59 -0
  967. package/dist/lib/onboarding/index.d.ts +13 -0
  968. package/dist/lib/onboarding/index.js +13 -0
  969. package/dist/lib/onboarding/orchestrator.d.ts +47 -0
  970. package/dist/lib/onboarding/orchestrator.js +569 -0
  971. package/dist/lib/onboarding/types.d.ts +79 -0
  972. package/dist/lib/onboarding/types.js +8 -0
  973. package/dist/lib/plan-limit-nag.d.ts +102 -6
  974. package/dist/lib/plan-limit-nag.js +348 -43
  975. package/dist/lib/policy-validator.d.ts +7 -0
  976. package/dist/lib/policy-validator.js +187 -0
  977. package/dist/lib/process-flag-company-context.d.ts +8 -0
  978. package/dist/lib/process-flag-company-context.js +67 -0
  979. package/dist/lib/report-publish.d.ts +175 -0
  980. package/dist/lib/report-publish.js +421 -0
  981. package/dist/lib/report-run.d.ts +62 -0
  982. package/dist/lib/report-run.js +123 -0
  983. package/dist/lib/report-snapshot.d.ts +12 -0
  984. package/dist/lib/report-snapshot.js +135 -0
  985. package/dist/lib/report-templates.d.ts +9 -0
  986. package/dist/lib/report-templates.js +21 -0
  987. package/dist/lib/scaffold-cli-floor.d.ts +8 -0
  988. package/dist/lib/scaffold-cli-floor.js +50 -0
  989. package/dist/lib/scan-packages/index.d.ts +2 -0
  990. package/dist/lib/scan-packages/index.js +168 -6
  991. package/dist/lib/search-index/background.d.ts +8 -1
  992. package/dist/lib/search-index/background.js +55 -200
  993. package/dist/lib/search-index/collection-path-repair-flag.d.ts +4 -0
  994. package/dist/lib/search-index/collection-path-repair-flag.js +7 -0
  995. package/dist/lib/search-index/embed-lock.d.ts +34 -0
  996. package/dist/lib/search-index/embed-lock.js +295 -0
  997. package/dist/lib/search-index/index.d.ts +12 -0
  998. package/dist/lib/search-index/index.js +153 -7
  999. package/dist/lib/search-index/load-gate.d.ts +57 -0
  1000. package/dist/lib/search-index/load-gate.js +270 -0
  1001. package/dist/lib/search-index/max-doc-bytes.d.ts +219 -0
  1002. package/dist/lib/search-index/max-doc-bytes.js +463 -0
  1003. package/dist/lib/search-index/qmd-exit-diagnostics.d.ts +5 -0
  1004. package/dist/lib/search-index/qmd-exit-diagnostics.js +40 -0
  1005. package/dist/lib/search-index/reindex-single-flight-flag.d.ts +5 -0
  1006. package/dist/lib/search-index/reindex-single-flight-flag.js +8 -0
  1007. package/dist/lib/service-manager/index.d.ts +42 -0
  1008. package/dist/lib/service-manager/index.js +105 -0
  1009. package/dist/lib/service-manager/launchd.d.ts +81 -0
  1010. package/dist/lib/service-manager/launchd.js +212 -0
  1011. package/dist/lib/service-manager/systemd.d.ts +19 -0
  1012. package/dist/lib/service-manager/systemd.js +72 -0
  1013. package/dist/lib/service-manager/types.d.ts +34 -0
  1014. package/dist/lib/service-manager/types.js +26 -0
  1015. package/dist/lib/test-utils/isolated-flag-company-context.d.ts +3 -0
  1016. package/dist/lib/test-utils/isolated-flag-company-context.js +18 -0
  1017. package/dist/lib/work-context/bind-best.d.ts +66 -0
  1018. package/dist/lib/work-context/bind-best.js +344 -0
  1019. package/dist/lib/work-context/bind-calling-session.d.ts +26 -0
  1020. package/dist/lib/work-context/bind-calling-session.js +63 -0
  1021. package/dist/lib/work-context/company-rebind.d.ts +23 -0
  1022. package/dist/lib/work-context/company-rebind.js +59 -0
  1023. package/dist/lib/work-context/company.d.ts +22 -20
  1024. package/dist/lib/work-context/company.js +124 -40
  1025. package/dist/lib/work-context/config.d.ts +58 -11
  1026. package/dist/lib/work-context/config.js +334 -83
  1027. package/dist/lib/work-context/contract.d.ts +13 -0
  1028. package/dist/lib/work-context/contract.schema.json +3 -1
  1029. package/dist/lib/work-context/default-company.d.ts +43 -0
  1030. package/dist/lib/work-context/default-company.js +83 -0
  1031. package/dist/lib/work-context/outbox-quarantine-status-flag.d.ts +4 -0
  1032. package/dist/lib/work-context/outbox-quarantine-status-flag.js +7 -0
  1033. package/dist/lib/work-context/outbox.d.ts +27 -5
  1034. package/dist/lib/work-context/outbox.js +135 -6
  1035. package/dist/lib/work-context/prd-sync.d.ts +56 -0
  1036. package/dist/lib/work-context/prd-sync.js +197 -0
  1037. package/dist/lib/work-context/preflight-contract.d.ts +28 -0
  1038. package/dist/lib/work-context/preflight-contract.js +85 -0
  1039. package/dist/lib/work-context/prompt-rebind.d.ts +25 -0
  1040. package/dist/lib/work-context/prompt-rebind.js +85 -0
  1041. package/dist/lib/work-context/reconcile.d.ts +15 -0
  1042. package/dist/lib/work-context/reconcile.js +405 -29
  1043. package/dist/lib/work-context/state.d.ts +93 -10
  1044. package/dist/lib/work-context/state.js +342 -29
  1045. package/dist/lib/work-context/windows-acl.d.ts +123 -0
  1046. package/dist/lib/work-context/windows-acl.js +425 -0
  1047. package/dist/lib/workers-registry/index.js +62 -8
  1048. package/dist/lib/workers-registry/read.d.ts +15 -0
  1049. package/dist/lib/workers-registry/read.js +17 -0
  1050. package/dist/main.d.ts +32 -0
  1051. package/dist/main.js +273 -73
  1052. package/dist/native-fast-route.d.ts +7 -0
  1053. package/dist/native-fast-route.js +45 -0
  1054. package/dist/node-network-compat-core.d.ts +12 -0
  1055. package/dist/node-network-compat-core.js +41 -0
  1056. package/dist/node-network-compat-fast.d.ts +7 -0
  1057. package/dist/node-network-compat-fast.js +23 -0
  1058. package/dist/node-network-compat.d.ts +2 -30
  1059. package/dist/node-network-compat.js +4 -51
  1060. package/dist/node-preflight.d.ts +7 -1
  1061. package/dist/node-preflight.js +5 -5
  1062. package/dist/register-all.d.ts +4 -29
  1063. package/dist/register-all.js +4 -233
  1064. package/dist/run/discover-schemas.d.ts +2 -1
  1065. package/dist/run/env-graph-guard.d.ts +2 -2
  1066. package/dist/run/env-graph-guard.js +5 -2
  1067. package/dist/run/hq-plugin.d.ts +4 -0
  1068. package/dist/run/hq-plugin.js +36 -8
  1069. package/dist/secrets-env-fast-path.d.ts +5 -0
  1070. package/dist/secrets-env-fast-path.js +16 -0
  1071. package/dist/secrets-env-fast-route.d.ts +18 -0
  1072. package/dist/secrets-env-fast-route.js +54 -0
  1073. package/dist/sentry-before-send.js +80 -0
  1074. package/dist/sentry.d.ts +16 -4
  1075. package/dist/sentry.js +179 -18
  1076. package/dist/startup-registration.d.ts +26 -2
  1077. package/dist/startup-registration.js +116 -15
  1078. package/dist/utils/checkpoint-stamp-write-error.d.ts +28 -0
  1079. package/dist/utils/checkpoint-stamp-write-error.js +99 -0
  1080. package/dist/utils/cli-network-lifecycle.d.ts +4 -0
  1081. package/dist/utils/cli-network-lifecycle.js +11 -0
  1082. package/dist/utils/cli-telemetry.d.ts +75 -1
  1083. package/dist/utils/cli-telemetry.js +433 -7
  1084. package/dist/utils/client-health.d.ts +0 -4
  1085. package/dist/utils/client-health.js +2 -2
  1086. package/dist/utils/cognito-refresh-sentry.d.ts +3 -0
  1087. package/dist/utils/cognito-refresh-sentry.js +49 -0
  1088. package/dist/utils/cognito-session.d.ts +71 -0
  1089. package/dist/utils/cognito-session.js +481 -27
  1090. package/dist/utils/console-origin.d.ts +9 -0
  1091. package/dist/utils/console-origin.js +28 -0
  1092. package/dist/utils/contribution-table.d.ts +1 -1
  1093. package/dist/utils/core-eval-trigger.d.ts +4 -0
  1094. package/dist/utils/core-eval-trigger.js +88 -0
  1095. package/dist/utils/environmental-error.d.ts +18 -0
  1096. package/dist/utils/environmental-error.js +240 -7
  1097. package/dist/utils/exclusive-lock.d.ts +32 -0
  1098. package/dist/utils/exclusive-lock.js +75 -0
  1099. package/dist/utils/expected-cli-error.d.ts +2 -0
  1100. package/dist/utils/expected-cli-error.js +4 -0
  1101. package/dist/utils/fast-stream-errors.d.ts +12 -0
  1102. package/dist/utils/fast-stream-errors.js +18 -0
  1103. package/dist/utils/feedback-diagnostics.d.ts +2 -1
  1104. package/dist/utils/feedback-log-bundle.d.ts +51 -26
  1105. package/dist/utils/feedback-log-bundle.js +211 -31
  1106. package/dist/utils/feedback-logs.d.ts +18 -47
  1107. package/dist/utils/feedback-logs.js +50 -21
  1108. package/dist/utils/feedback-screenshots.d.ts +0 -1
  1109. package/dist/utils/feedback-screenshots.js +1 -1
  1110. package/dist/utils/files-browse-acl.d.ts +5 -0
  1111. package/dist/utils/files-browse-acl.js +11 -0
  1112. package/dist/utils/hq-core-yaml.d.ts +10 -0
  1113. package/dist/utils/hq-core-yaml.js +40 -0
  1114. package/dist/utils/hq-root-resolver.d.ts +13 -0
  1115. package/dist/utils/hq-root-resolver.js +103 -0
  1116. package/dist/utils/hq-roots.d.ts +25 -2
  1117. package/dist/utils/hq-roots.js +67 -7
  1118. package/dist/utils/incomplete-install-error.d.ts +87 -19
  1119. package/dist/utils/incomplete-install-error.js +319 -68
  1120. package/dist/utils/install-tree-torn.d.ts +260 -24
  1121. package/dist/utils/install-tree-torn.js +998 -51
  1122. package/dist/utils/large-file-guard.d.ts +0 -10
  1123. package/dist/utils/large-file-guard.js +1 -1
  1124. package/dist/utils/local-files-overview.d.ts +4 -8
  1125. package/dist/utils/local-files-overview.js +48 -7
  1126. package/dist/utils/login-provider.d.ts +7 -0
  1127. package/dist/utils/login-provider.js +34 -0
  1128. package/dist/utils/pack-contributions.d.ts +2 -14
  1129. package/dist/utils/pack-contributions.js +7 -44
  1130. package/dist/utils/package-root-diagnostics.d.ts +1 -1
  1131. package/dist/utils/people.d.ts +7 -11
  1132. package/dist/utils/people.js +5 -20
  1133. package/dist/utils/plan-gate-error.d.ts +52 -10
  1134. package/dist/utils/plan-gate-error.js +364 -41
  1135. package/dist/utils/qmd-model-download-error.d.ts +0 -8
  1136. package/dist/utils/qmd-model-download-error.js +1 -1
  1137. package/dist/utils/qmd-query-document-error.d.ts +0 -6
  1138. package/dist/utils/qmd-query-document-error.js +1 -1
  1139. package/dist/utils/redact-error-text.d.ts +0 -2
  1140. package/dist/utils/redact-error-text.js +3 -2
  1141. package/dist/utils/redact-url.d.ts +14 -0
  1142. package/dist/utils/redact-url.js +218 -0
  1143. package/dist/utils/run-bundled-script.d.ts +6 -0
  1144. package/dist/utils/run-bundled-script.js +117 -4
  1145. package/dist/utils/sandbox-runner-client.d.ts +2 -1
  1146. package/dist/utils/scaffold-fast-import-guard.d.ts +2 -0
  1147. package/dist/utils/scaffold-fast-import-guard.js +40 -0
  1148. package/dist/utils/scaffold-packlist-guard.d.ts +7 -0
  1149. package/dist/utils/scaffold-packlist-guard.js +23 -0
  1150. package/dist/utils/scaffold-sibling-references.d.ts +22 -0
  1151. package/dist/utils/scaffold-sibling-references.js +156 -0
  1152. package/dist/utils/secret-load-availability.d.ts +8 -0
  1153. package/dist/utils/secret-load-availability.js +54 -0
  1154. package/dist/utils/secrets-cache.d.ts +7 -3
  1155. package/dist/utils/secrets-cache.js +162 -14
  1156. package/dist/utils/self-update.d.ts +34 -1
  1157. package/dist/utils/self-update.js +660 -42
  1158. package/dist/utils/sentry-fingerprint.d.ts +23 -1
  1159. package/dist/utils/sentry-fingerprint.js +223 -31
  1160. package/dist/utils/staged-install.d.ts +34 -0
  1161. package/dist/utils/staged-install.js +346 -0
  1162. package/dist/utils/staged-npm-install.d.ts +16 -0
  1163. package/dist/utils/staged-npm-install.js +264 -0
  1164. package/dist/utils/sync-log-sources.d.ts +15 -0
  1165. package/dist/utils/sync-log-sources.js +36 -0
  1166. package/dist/utils/table-width.d.ts +7 -0
  1167. package/dist/utils/table-width.js +15 -0
  1168. package/dist/utils/team-upgrade.d.ts +1 -1
  1169. package/dist/utils/team-upgrade.js +4 -3
  1170. package/dist/utils/update-command-supervisor.cjs +247 -0
  1171. package/dist/utils/upload-author.d.ts +15 -0
  1172. package/dist/utils/upload-author.js +39 -0
  1173. package/dist/utils/vault-api.d.ts +21 -1
  1174. package/dist/utils/vault-api.js +251 -84
  1175. package/dist/utils/version-check.d.ts +11 -1
  1176. package/dist/utils/version-check.js +32 -3
  1177. package/dist/utils/version-gate.d.ts +101 -17
  1178. package/dist/utils/version-gate.js +645 -70
  1179. package/dist/utils/version-report.d.ts +27 -0
  1180. package/dist/utils/version-report.js +105 -0
  1181. package/dist/utils/windows-spawn.d.ts +6 -0
  1182. package/dist/utils/windows-spawn.js +37 -0
  1183. package/dist/version-request.d.ts +14 -0
  1184. package/dist/version-request.js +36 -0
  1185. package/package.json +20 -8
  1186. package/scripts/mesh-daemon-if-stale.mjs +20 -0
  1187. package/templates/reports/blank.md +3 -0
  1188. package/templates/reports/daily-digest.md +11 -0
  1189. package/templates/runbooks/update-report.md +21 -0
  1190. package/dist/commands/scaffold-fast.d.ts +0 -41
  1191. package/dist/commands/scaffold-fast.js +0 -57
  1192. package/dist/lib/work-context/index.d.ts +0 -25
  1193. package/dist/lib/work-context/index.js +0 -21
package/CHANGELOG.md CHANGED
@@ -2,7 +2,4326 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
- ## [5.314.0] — 2026-10-02
5
+ ## [5.316.0] — 2026-10-02
6
+ - Add a default-off autopilot notice for registered lead headlines that remain stale for more than 55 minutes, using `headline_at` or the timestamp prefix in `now`.
7
+ - Add a flag-gated per-job option to complete successful scheduled bot runs without an owner DM; failures still report normally.
8
+ - Port `share-suggestion-state`, `repo-run-registry`, and `detect-stale-review-base` to native TypeScript on the fast route behind the default-off `core-native-hook-helpers` flag.
9
+ - Detect the installed hq-cli drain entry in provider settings so lane messages do not warn when the running worker can drain its inbox.
10
+ - Resolve hostless Outpost lane lookups by ULID without transporting the full lane list, including compatibility with older Outpost CLIs.
11
+ - Refuse to publish a stable or rc release tag unless its commit is on main, its version is higher than npm latest, and it contains the commit npm latest was built from. This stops a tag on an old commit from putting older code on npm as latest.
12
+ - Remove an unused file-exists helper and stop exporting four disk-guard internals. No behaviour change.
13
+
14
+ ## [5.315.0] — 2026-10-02
15
+ - The CLI loads the Sentry error-reporting library only when it first needs it, so commands that report nothing start with fewer imports. Reporting, scrubbing and flushing work as before.
16
+ - Keep first-sync guidance enabled without its rollout gate and remove the obsolete plan-limit fallback flag-off test.
17
+
18
+ - Gate autopilot nudge deduplication behind a default-off company flag, preserving message IDs and requiring a 30-minute active-condition cooldown for repeat nudges.
19
+ - Let lane autopilot skip malformed lead inputs individually behind a default-off flag and notify the affected lead once.
20
+ - Lead autopilot can batch stale KPI reminders into one oldest-first message per pass when the company enables `lanes.autopilot-kpi-staleness-batch`.
21
+ - Preserve the last policy tag when migrating trigger policies.
22
+ - Add read-only `hq lanes keep-alive-audit` reporting for lead keep-alive timing, early resumes, and missed restarts.
23
+ - Resolve bare lane IDs to their stored lane record before messaging or showing them, preventing messages from being written under unresolved IDs.
24
+
25
+ ## [5.313.0] — 2026-10-02
26
+ - Gate live-only lane hire-grant counting by company; blocked and awaiting-input children no longer occupy slots when enabled, and their resume is checked against current capacity.
27
+ - Add company-gated lane low-disk admission protection and Codex rollout retention.
28
+
29
+ ## [5.312.1] — 2026-10-02
30
+ - Fix checkpoint Stop hook-state creation and the jq-absent early exit to match the bundled shell.
31
+ - Add native `hq core eval-trigger`, `migrate-policy-triggers`, `register-project`, and `work-mesh-live-rebind` on the fast route behind the default-off `core-native-hook-helpers` flag.
32
+ - Prevent concurrent QMD reindex workers from replacing each other's lock owner record.
33
+ - Add a default-off `hq company rename <new name>` command to update a cloud-backed company's display name.
34
+ - Preserve HTTP status and safe server denial codes in work-mesh registration diagnostics.
35
+
36
+ ## [5.312.0] — 2026-10-02
37
+ - The desktop app can turn event-driven daemon sync on or off with its Instant Sync setting. The daemon stores the preference and restarts when a running daemon needs to apply it.
38
+ - `hq dm channel` now explains empty channels and displays a readable fallback for bodyless system notifications.
39
+
40
+ - Personal vault browsing now treats slash and dot paths as the root and normalizes leading slashes on nested paths.
41
+ - Personal and company file browsing normalize root markers before listing.
42
+ - Schedule the first eligible lead keep-alive check from the lane terminal watcher when the opt-in flags are enabled.
43
+ - Add default-off KPI freshness reporting and deduplicated re-measurement nudges to lane autopilot.
44
+ - Add company-scoped Outpost owner lookup for hostless lane ULIDs used by `hq lanes message`.
45
+ - Add opt-in autopilot nudges and operator escalation for missed lead deadlines.
46
+ - Report the bounded host BASH_ENV class for hook telemetry so HQ-CLI-2C startup timing can be distinguished accurately.
47
+ - Add gated `hq vault retention get|set` commands for the per-vault default retention period.
48
+
49
+ ## [5.311.4] — 2026-10-02
50
+ - Preserve existing local company starter files during cloud provisioning by having the CLI request that hq-pro skip blank starter seeding; older servers are detected before company creation.
51
+
52
+ ## [5.311.3] — 2026-10-01
53
+ - Match company file access checks against the company-anchored paths printed by `hq files browse`.
54
+ - Record a placement resolved to the current host as local so the lane starts without dispatching back through Outpost pickup.
55
+
56
+ ## [5.311.2] — 2026-10-01
57
+ - Reduce fast-path startup work by loading network compatibility only on routes that need it.
58
+ - Make envelope `next_check_at` an unconditional keep-alive hold and remove its completed rollout flag.
59
+ - Lead autopilot no longer asks a lead to review its own lane as a finished worker, or to relaunch a worker for a story assigned to the lead itself.
60
+ - Lead autopilot counts a story's current `lane` together with its `lanes` history, so `lanes: []` no longer hides the assigned lane.
61
+ - Keep the CLI company seed fixture byte-matched to the hq-core starter golden, including the session sentinel ignore rule.
62
+ - Record lane-watcher continuations as `watcher` resumes and label their prompt source accurately; record monitor-event and system-notice message sources distinctly in lane resume history.
63
+
64
+ ## [5.311.1] — 2026-10-01
65
+ - Preserve shell-compatible diagnostics when delegate pickup receives a malformed manifest.
66
+ - Print URLs returned by `hq integrations call` without redacting their paths or query values. Other integration JSON output keeps its existing URL redaction.
67
+
68
+ ## [5.311.0] — 2026-10-01
69
+ - Add native `hq core hq-session` and `checkpoint-stop-gate` handlers on the fast route behind the default-off `core-native-session` flag, retaining bundled shell rollback companions.
70
+
71
+ - Claude lane account selection now skips accounts held for the lane's model and preserves the quota reset details when no eligible account is available.
72
+ - Require a latency regression to recur across benchmark rounds before failing the fast-route gate.
73
+ - Detect inline private keys when validating job definitions.
74
+ - Deliver each Outpost its own lead autopilot registry rows from the primary reconcile pass, and report a missing or stale registry on the Outpost.
75
+ - Add an opt-in, default-off hq-flags gate that lets the first keep-alive retry after a done turn run after a 30-second settle while preserving later backoff.
76
+ - Add the default-off cli.personal-connector-settings flag to store imported local connector manifests in the personal vault instead of the company vault.
77
+
78
+ ## [5.310.0] — 2026-10-01
79
+ - Move directly controlled Linux CI checks to ARM runners where their tools support ARM.
80
+ - Lead autopilot resolves a lead's company through its project when the lane record does not carry a company, and skips project paths registered to a different company.
81
+ - Install-tree recovery errors now report bounded sibling, target, version-gate phase, and updater-liveness enums.
82
+
83
+ ## [5.309.1] — 2026-10-01
84
+ - Fixed `hq agents rm` to remove external agents through revoke rather than the hosted-agent teardown path.
85
+
86
+ - Wait for asynchronous integration approvals to reach a terminal queue state and report pending work accurately.
87
+
88
+ - Add privacy-safe qmd exit diagnostics to Sentry reports.
89
+
90
+ - `hq files delete` help now explains exact-key and wildcard-prefix matching.
91
+ - Add native `hq core worker lint` and `hq core worker share` behind the default-off `core-native-worker-skills` gate.
92
+
93
+ - Port `hq core dm-bind` and `hq core work-mesh-bind-trusted` to native TypeScript behind `core-native-utilities`, retaining the bundled-script fallback.
94
+
95
+ - Move directly controlled Linux CI checks to ARM runners where their tools support ARM.
96
+ - Lead autopilot resolves a lead's company through its project when the lane record does not carry a company, and skips project paths registered to a different company.
97
+ - Install-tree recovery errors now report bounded sibling, target, version-gate phase, and updater-liveness enums.
98
+
99
+ ## [5.309.0] — 2026-10-01
100
+ - `hq lanes autopilot run` now evaluates leads based on lane ownership rather than a host label, and reports registered leads assigned to another host as skipped.
101
+ - Allow non-overlapping story-prefix teams to share a project in lane checks and reports.
102
+
103
+ ## [5.308.0] — 2026-10-01
104
+ - Added native `hq core audit-log`, `git-pack-extension-check`, `pin`, and `refresh-vault-access` commands behind the default-off `core-native-utilities` flag.
105
+ - CI now cancels superseded pull-request benchmarks and reserves the additional Windows and macOS checks for changes that affect those platform paths. Main pushes retain all platform checks.
106
+ - `hq lanes list` now settles legacy failed-dispatch mirrors as undispatched only after a successful strict owner snapshot returns no row; snapshot errors and mirrors with a host report remain unverified.
107
+ - Outpost pickup and remote database requests now time out, and failed pending DM lookups are reported.
108
+
109
+ ## [5.307.0] — 2026-10-01
110
+ - Add native `hq core resolve-company` on the fast route behind the default-off `core-native-utilities` gate.
111
+
112
+ - Stop immediately when hq-deploy repeats an app-list cursor while resolving apps.
113
+
114
+ - Added native `hq core audit-log`, `git-pack-extension-check`, `pin`, and `refresh-vault-access` commands behind the default-off `core-native-utilities` flag.
115
+ - CI now cancels superseded pull-request benchmarks and reserves the additional Windows and macOS checks for changes that affect those platform paths. Main pushes retain all platform checks.
116
+ - `hq lanes list` now settles legacy failed-dispatch mirrors as undispatched only after a successful strict owner snapshot returns no row; snapshot errors and mirrors with a host report remain unverified.
117
+ - Outpost pickup and remote database requests now time out, and failed pending DM lookups are reported.
118
+
119
+ ## [5.306.0] — 2026-10-01
120
+ - End long install-tree waits early when a named retired npm sibling's deep activity scan is incomplete, report the recovery as unverified, and give safe wait-and-repair guidance.
121
+
122
+ ## [5.305.0] — 2026-10-01
123
+
124
+ - Work Mesh project discovery skips projects whose matching local lifecycle state is archived or retired.
125
+
126
+ - `hq lanes show` now treats a newer terminal primary mirror as authoritative when an Outpost owner snapshot is behind, avoiding a misleading refresh warning while preserving warnings for nonterminal conflicts.
127
+ - Self-updates detect an unwritable npm global prefix before install, show the command to repair that install, and report the handled permission state as a rate-limited warning.
128
+ - Keep Work Mesh held events unique by event ID across retries, including interrupted overflow recovery.
129
+ - Added `hq mcp list` as an alias for the existing MCP status command. `hq version` can show cached CLI update guidance on stderr when the default-off `cli.version-update-nudge` flag is enabled. Bare `hq --version` prints only the installed CLI semver and starts no flag or network work.
130
+ - Keep-alive no longer lets a newer terminal lane or a same-profile lane under a distinct lane senior supersede a running lane.
131
+ - With `cli.company-errors-sdk-warning` enabled, `hq people` uses shared active-company guidance when local metadata is missing, and files commands show the AWS SDK Node-version notice only with verbose diagnostics.
132
+ - Remove the unrelated secret-sharing hint from active member listings.
133
+
134
+ ## [5.304.0] — 2026-10-01
135
+ - `hq lanes show` skips owner refresh only when a failed Outpost dispatch explicitly recorded `pickup_persisted: false` and no owner heartbeat; it reports `remote_refresh: "skipped_undispatched"` in that case.
136
+
137
+ ## [5.303.0] — 2026-10-01
138
+ - Fixed bundled shell scripts failing on Windows when Git Bash is installed but `bash` is not on `PATH`.
139
+ - The bundled token usage script now reads Claude sessions from `CLAUDE_CONFIG_DIR/projects` and the standard Claude project directories, including nested session folders (subagent transcripts are skipped), when no project directory is given.
140
+
141
+ ## [5.302.0] — 2026-10-01
142
+
143
+ - Generate company project indexes while preserving hand-written content unless `--accept` is used.
144
+
145
+ - Follow all hq-deploy app-list pages when resolving apps for comments and report publishing.
146
+ - Let a senior message or resume an `awaiting_input` lane when its pending question is gone or cannot be reached from the senior's host. Pending questions remain answer-first, including across registered Outpost routes.
147
+ - A senior can resume or send a fallback message to an `awaiting_input` lane when its pending questions are addressed to another audience. Once the resume is accepted, those questions are cancelled on their owner; unreachable owners are reported while the lane continues.
148
+ - When a blocker escalation targets a session without a registered monitor inbox, record the reason and deliver it through the lane's existing inbox instead of retrying the failed escalation every watcher pass.
149
+ - `hq integrations disconnect` can now remove company integrations that were created outside the app catalog.
150
+ - Lead envelopes can set `next_check_at` to defer automatic keep-alive resumes
151
+ until a scheduled check, with pending work continuing to resume immediately.
152
+ - Reconcile records deduplicated keep-alive skip reasons in each lane's watcher event log.
153
+ - Add a company-scoped reconcile gate that closes local interrupted worker lanes after 24 hours when all carried project stories are done or dropped and no pending work remains.
154
+ - Skip refreshing failed-dispatch lane mirrors that never reached their Outpost owner.
155
+ - Keep lane keep-alive, retry-context, and monitor history readers moving past torn JSONL records.
156
+ - Refresh primary mirror heartbeats from fresh running Outpost reports before dead-host reconciliation.
157
+ - Report answerable awaiting-input questions as the `hq lanes show` delivery path, and retry blocker-freshness fallback messages after a failed append.
158
+ - Let `hq integrations connect` send an API key in a custom HTTP header.
159
+ - Bound `hq rescue` GitHub release and tag lookups to 30 seconds with a clear timeout error.
160
+ - hq-cli now logs live-board refresh failures and recovery while continuing to retry.
161
+ - On Windows, background jobs started by `/handoff` and search indexing no longer open console windows.
162
+
163
+ ## [5.301.0] — 2026-10-01
164
+ - `hq meetings transcript` and `hq meetings notes` stop a stalled document download after two minutes and say so, instead of waiting forever.
165
+
166
+ - Keep `hq access` from reporting a denied vault path as missing or exposing matching paths.
167
+ - Fix self-updates for npm installs whose global prefix contains spaces.
168
+ - `hq files acl companies/<slug>` and `hq files unshare companies/<slug> --with ...` now handle ACL rows at that exact company path instead of treating it as the vault root.
169
+ - Add native hq core job notify and remediate commands behind core-native-jobs, retaining bundled shell companions.
170
+ - Allow owners to disconnect custom Factory connections without installation records, and send the company UID required by the revoked-connection purge endpoint.
171
+ - Fail company provisioning when its initial sync reports per-file upload failures, while retaining the successful upload count in failure details.
172
+ - Treat plan-limited files as initial-sync failures and keep provisioning progress snapshots updated.
173
+ - Preserve story attribution after a message is durably queued by lane admission or an account move.
174
+ - The token usage report accepts `--project-dir <path>` to read one Claude activity folder instead of the default folders.
175
+
176
+ ## [5.300.0] — 2026-09-30
177
+ - `hq files unshare --with agt_...` removes a grant made to an agent. Before, agent uids were rejected as invalid principals.
178
+ - `hq daemon` no longer drops remote-control sessions when claude or codex is reinstalled at the same version or when hq-cli is released. The daemon's plan leaves out the tool's path (the host finds it when it starts), the host restarts a session only for a new tool version, and a tool that looks missing for one plan read does not pause the session. On outpost primary, a long-running Claude session's auto-updater reinstalled claude every few minutes and each reinstall restarted remote-control two or three times.
179
+ - With the default-off hq-flags gate `files.share-empty-prefix-warning`, `hq files share` warns when a granted prefix has no files. A failed or timed-out list check does not block the grant.
180
+ - Recognize pnpm v11+ global installs and handle Windows drive-path tar archives without waiting for the asynchronous feature-flag snapshot.
181
+ - Self-update failure reports now include the npm error code and a sanitized reason.
182
+
183
+ ### Fixed
184
+
185
+ - `hq core rebuild-index companies --company <slug>` scopes the generated write to that company (behind the default-off `cli.rebuild-index-company-scope` flag), and `--help` exits without reading or writing company indexes. The unscoped run also ignores orchestrator state tied to another company's PRD.
186
+
187
+ - Lane messages and resumes that switch project or story attribution now tell the provider which story is active. Reused completion artifacts no longer close the new story.
188
+ - Make signed-out `hq sync` commands fail fast with `hq login` guidance when stdin or stdout is not a terminal, while keeping browser login in a terminal.
189
+
190
+ ## [5.299.0] — 2026-09-30
191
+ - Add `hq lanes accounts clear-quota` and clear future quota marks after successful lane turns.
192
+ - On macOS, `hq daemon` retires a loaded legacy mesh LaunchAgent even when its plist is missing, and daemon uninstall boots the job out before deleting its plist. Mesh-owner wait logs now repeat at most every ten minutes.
193
+ - Restore npm command links after a failed hq-cli self-update and repair or report missing links after successful installs.
194
+
195
+ ## [5.298.0] — 2026-09-30
196
+ - [feedback_d4a080e9-de79-4290-81c3-06ba26990a38] Preserve raw substring matches while normalizing company path searches.
197
+ - `hq agents` now prints the Slack app settings link and the console paste link whenever an agent is waiting on its Slack app-level token, and follows the pending actions and paste URL the server returns.
198
+ - When an app install is already running, `hq integrations connect` tells you to wait instead of showing a generic conflict error.
199
+ - Validate policy trigger expressions when loading worker policies (feedback_3982db47-ceb8-4148-8ee0-4dd533f5138b).
200
+
201
+ ## [5.297.0] — 2026-09-30
202
+ - When enabled by hq-flags, show the quarantined work-context outbox count and latest reason in hq doctor and mesh daemon status.
203
+ - `hq daemon` now exits after shutdown when handles remain open, and its mesh service waits when another live mesh daemon owns the process lock.
204
+
205
+ ## [5.296.0] — 2026-09-30
206
+ - Upgrade varlock to 1.21.1. `hq run` skips Varlock cache setup and reports malformed env files promptly without sending them to Sentry.
207
+ - Record bounded actor and trigger history for lane worker starts and expose it through `hq lanes show --json`. Preserve history through conflict merges and envelope repair, and record answered-question callers for immediate and queued resumes.
208
+ - `hq lanes` no longer lets a late terminal lane envelope change a story the senior already marked done or dropped, and `hq lanes story review <lane> <story>` moves a carried story to review before senior verification (feedback_d0164732-22b0-4426-9b66-c9758ba205e3).
209
+
210
+ ## [5.295.0] — 2026-09-30
211
+ - Add native `hq core job run` behind the default-off `core-native-jobs` gate, retaining its bundled shell rollback companion.
212
+
213
+ - Remove the unused direct client-health Sentry route; the existing server-side reporting path remains unchanged.
214
+
215
+ - Add native `hq core job probe` behind the existing default-off `core-native-jobs` gate.
216
+ - Self-update supervisor copy and cleanup failures now log their error class.
217
+ - Report failed and ineffective self-updates to Sentry with bounded context.
218
+
219
+ - hq-cli release notes now use per-branch fragments that are folded into the next version section, reducing conflicts between parallel pull requests.
220
+ - Claude keep-alive resume events now retain a compact account-load selection snapshot, including when the lane stays on its current account.
221
+ - After a successful missing-envelope repair reports unfinished work, the watcher can queue one automatic continue behind the default-off `lanes.envelope-repair-continue` flag. The repair prompt now gives the required unfinished-story envelope fields.
222
+ - Add a private machine-session token-file command for supported machine-auth handoffs.
223
+ - Apply the 5x fast-route speedup gate only when the base p95 is at or above the 200 ms target; retain the p95 latency and base/PR regression gates.
224
+ - The changelog fragment check runs only on pull requests again, so pushes to main no longer fail it.
225
+ - Refresh terminal Outpost lane mirrors before applying `hq lanes list` state filters, so a lane whose owner is still running is listed as running.
226
+ - Remove the unused Outpost snapshot cache flag and its cache-first lane-list path.
227
+ - The mesh daemon logs spool watcher failures and continues flushing on its polling interval instead of exiting on an unhandled watcher error.
228
+ - Make the manager status gate always active and remove its rollout flag lookup.
229
+ - Compare fast-route latency with a PR-build full-graph baseline so the 5x gate remains valid after the base build gains fast routing.
230
+
231
+ ## [5.294.0] — 2026-09-30
232
+ - Record automatic keep-alive resumes in each lane's durable, bounded history and expose it in `hq lanes show --json` and `hq lanes list --json`.
233
+
234
+ ### Fixed
235
+
236
+ - Outpost `hq lanes message` now reaches primary-hosted lanes through the
237
+ primary owner command, which checks sender rights and includes the
238
+ destination in JSON output.
239
+ - Split the lane story command handlers into a dedicated module without changing behavior.
240
+ - On a box, `sudo hq daemon migrate --apply` now finds the login user's own systemd user units (hq-mesh-daemon, hq-lanes-reconcile and the rest) and stops them through that user's systemd manager. `sudo hq daemon uninstall --restore-legacy` restarts them the same way. Before, root looked only in its own home and could not reach the login user's manager.
241
+
242
+ ## [5.293.0] — 2026-09-30
243
+ - [HQ-CLI-HOOK-TIMEOUT-KIND] Group hook timeout events by normalized kind (`warning` or `exceeded`) across scripts; keep script and platform tags for triage. Existing per-script issues will stop receiving new events, and the lead handles their status.
244
+ - [HQ-CLI-2C] Label unmeasured SessionStart delay as entry Bash startup when BASH_ENV is set; doctor follows the env-prefixed hook command.
245
+ - `hq lanes move` now reports an already-on-target no-op without dispatching or changing the queued lane.
246
+ - Keep bundled scheduled-job reconciliation units on the live scaffold runner, and preserve caller spelling in job-validation paths.
247
+ - On Linux, `hq daemon run` sets XDG_RUNTIME_DIR for its services when the system unit left it unset, so `systemctl --user` from jobs-reconcile no longer fails with "Failed to connect to bus: No medium found".
248
+
249
+ - With the default-off lanes.keep-alive-resume-blocked gate enabled, reconcile
250
+ resumes an opted-in blocked lead after 15 minutes when it has open stories and
251
+ no pending question. After two blocked resumes, it records another blocked
252
+ episode for operator review.
253
+ - Lead autopilot dry runs no longer start workers, append repeat wakes, or write escalation records. Passed stories count as closed and canonical story-ledger lane objects are accepted.
254
+ - Autopilot checks status paths against the lead company, scopes escalation deduplication to each lead, includes carried stories in stale-worker checks, and recovers locks left by reused PIDs.
255
+ - The lead autopilot adds prompts for available grant slots, flat KPI reports, stale blockers, completed projects, stale worker ledgers, and stories without live lanes, with escalation after two unanswered wakes.
256
+
257
+ - Preserve empty directory paths and modes in recorded corpus cases. The recorder rejects tree entries the case format cannot replay, and CI checks committed snapshots after a clean Git archive extraction.
258
+ - Cross-Outpost resume and hire-grant dispatch verify the senior from the
259
+ senior's owning Outpost before signing the caller's grant context.
260
+ - Run the no-Hermes source guard with the required Changelog gate in one runner job.
261
+
262
+ ### Added
263
+
264
+ - Add the read-only `hq lanes autopilot report` metrics command for operator nudges, review latency, idle capacity with ready work, and nudge defects.
265
+
266
+ - Add `hq lanes ask --priority P0|P1|P2` and show question urgency in the queue; warn when omitted during the compatibility release.
267
+ - Route ported native hq core commands through the fast-startup gate while preserving each family's bundled shell fallback.
268
+
269
+ ### Fixed
270
+
271
+ - Skip malformed remote lane mirrors with a lane and field warning while
272
+ keeping local lane validation strict. Refresh mirror queue reason and details
273
+ from one owner snapshot.
274
+ - Primary-side Outpost question show and answer skip the current Outpost during owner lookup. Remote answers require the lane senior; when the owner is reachable, an unrelated unavailable Outpost is returned as `lookup_errors` without blocking the answer.
275
+ - CI-only: keep the same-binary Node control case measured without applying performance regression thresholds.
276
+ - Fix npm global self-updates, which have failed with MODULE_NOT_FOUND since 5.290.0. The update moved the hq-cli package aside and then started its installer through a supervisor script inside that package. It now runs the installer through a copy of the supervisor outside the package.
277
+
278
+ ## [5.292.0] — 2026-09-30
279
+ - Add native `hq core jobs reconcile` behind `core-native-jobs`, retaining the bundled shell rollback and scheduled-job helpers.
280
+ - Behind the default-off `cli.staged-self-update` flag, an npm global self-update installs the new version beside the running package, checks that it answers `--version`, then swaps it in with two renames. The running `hq` stays on disk for the whole install, so services the daemon starts during an update no longer fail with "hq: command not found" or MODULE_NOT_FOUND. pnpm, Bun, Windows and linked installs keep the in-place update.
281
+
282
+ - Disable Git auto-maintenance, auto-gc, and detached gc during CM-W2b corpus
283
+ creation so fixture snapshots cannot race lock files.
284
+
285
+ ### Added
286
+
287
+ - `hq core ontology merge-copies --listed --only <file>` (flag `checkpoint.ontology.merge-listed-pairs`, default off) merges exactly the copy -> original pairs in the file, including pairs whose names differ, such as a company listed under two names. Each pair must name two entities of one type; a copy listed twice, or listed as both a copy and an original, is skipped as `listed_conflict`. Signal and link holds apply as for other pairs.
288
+ - `hq core ontology drop-aliases --only <file>` (flag `checkpoint.ontology.drop-aliases`, default off) removes reviewed wrong aliases, given as `{ entity, alias }` pairs, from entity files. It is a dry run unless `--apply` is given, and it writes through the multi-writer outbox so sync uploads the change.
289
+
290
+ ### Fixed
291
+
292
+ - `hq core ontology merge-copies --rewrite-refs` no longer edits signal or source files, which sync cannot upload. A pair whose copy a signal or source still names is now held as `server_owned_refs`, and its copy is kept.
293
+ ### Added
294
+
295
+ - Add `hq core delegate bundle`, `grant`, `publish`, `send`, and `verify` as
296
+ native TypeScript handlers behind the default-off `core-native-delegate`
297
+ flag, with their shell companions retained as rollback assets.
298
+ - Match native handoff open-steps JSON nulls and invalid-JSON exit codes, and sync zero-change handoffs to the calling session's bound company after mirroring the thread.
299
+
300
+ ## [5.291.0] — 2026-09-29
301
+ - Add native `hq core jobs schedule-parse` and `validate` commands behind the default-off `core-native-jobs` gate, retaining their shell rollback companions.
302
+
303
+ - Offline mesh reconcile does not refresh person tokens or start interactive sign-in; valid cached tokens still validate device defaults.
304
+ - Retry daemon state replacement briefly when Windows reports transient rename contention, while keeping the previous state file intact on failure.
305
+ - When a lane has no Board story ID, `hq lanes` records the lane event without sending a story PATCH.
306
+ - `hq core policy age-report` now matches the legacy script when a missing reference has no hidden sibling under a dot directory.
307
+ - Keep bundled scaffold scripts current with staging and check their pinned source revision in CI.
308
+ - Starter plan-limit refusals now show why and how to fix them. The CLI reads
309
+ hq-pro's hard-stop 402 body (and the older shapes) and prints the server
310
+ message, the usage, the fix options, the free-month offer when one stands,
311
+ and the upgrade link, including in non-interactive runs. `hq secrets set`,
312
+ `hq secrets generate-link`, `hq members invite` and `hq integrations connect`
313
+ all use this renderer and exit non-zero.
314
+ - `hq sync push`, `hq sync push --all`, `hq sync now`, `hq sync now --all` and
315
+ `hq skill create` no longer print a success line when a plan limit refused a
316
+ file. They list the refused files the runner names, show the upgrade link and
317
+ exit non-zero. `hq sync push --json` adds `planLimitRefused` to its `complete`
318
+ event instead.
319
+
320
+ ## [5.290.0] — 2026-09-29
321
+ - Ignore stale but well-formed worker-profile queue details when another valid queue reason is stored, and remove them on the lane's next write.
322
+
323
+ ### Added
324
+
325
+ - Gate `hq sync push --personal <paths>` behind the default-off `cli.personal-targeted-push-paths` flag; explicit paths are normalized and checked against personal-vault scope and exclusions before upload.
326
+ - `hq core ontology merge-copies --rewrite-refs` (flag `checkpoint.ontology.merge-rewrite-refs`, default off) re-points signal refs, invoice and bill links, source and knowledge links from a merged copy to its survivor and carries the copy's external ids and web domains; a pair whose files hold different values for one external id stays held (`external_id_conflict`).
327
+ - A `--only` entry can carry `resolve_external_ids: { <provider>: { primary, namespace, object_type? } }`. With `--rewrite-refs`, a conflicting provider id then keeps `primary` in `external_ids` and moves the pair's other id to the survivor's `external_refs` (`system`, `namespace`, `objectType`, `recordId`), so no id is dropped. A `primary` that matches neither id still holds the pair.
328
+
329
+ ### Fixed
330
+
331
+ - `hq core ontology merge-copies --variants` no longer counts a copy's own `# Name` heading as unmerged text, so a merged variant copy can be deleted.
332
+ - `merge-copies` no longer moves a copy's links to itself or to its original into the original, and does not count them or the `## Relationships` heading as unmerged text.
333
+ - `merge-copies` now finds signal `entity_refs` written with a `.md` suffix, so it holds (or, with `--rewrite-refs`, re-points) them instead of deleting a copy they still name.
334
+ - `merge-copies --rewrite-refs` no longer holds a survivor as `merge_invalid` when it gains external ids but has no `web_domains` key (or the reverse).
335
+ - `merge-copies` treats an annotation list item whose first key is `path:` as a link to the copy, so it no longer deletes a copy such an annotation still names.
336
+
337
+ ## [5.289.0] — 2026-09-29
338
+ - A failed `hq update` restores the previous working hq-cli install when it could be backed up, instead of leaving the CLI partially updated.
339
+
340
+ ## [5.288.0] — 2026-09-29
341
+
342
+ ### Added
343
+
344
+ - Add lead autopilot prompts to the lanes reconcile pass behind
345
+ `lanes.lead-autopilot` (off by default) and expose
346
+ `hq lanes autopilot run --dry-run --json`. It asks registered leads to review
347
+ finished, blocked, or missing workers or fill unused grant slots, starts a
348
+ ready worker after an
349
+ unanswered fill prompt ages 15 minutes, and relies on keep-alive to resume
350
+ completed leads with open work.
351
+
352
+ ### Fixed
353
+
354
+ - Retry daemon state replacement briefly when Windows reports transient rename
355
+ contention, while keeping the previous state file intact on failure.
356
+
357
+ ## [5.287.0] — 2026-09-29
358
+ - Group hook-timeout events by script while preserving triage diagnostics.
359
+ - Preserve safe slow-child script basenames in hook-timeout diagnostics.
360
+ - Cloud provisioning and retirement now stop after 15 seconds when a Vault API request stalls, with a clear timeout error.
361
+ - In the HQ desktop app, clicking "Explain HQ first" in the setup bot now shows the fixed explanation of HQ at once, with no model turn. The setup worker ships that text in `skills/explain-hq.md`, and the bot reads the same file when someone asks in their own words.
362
+ - Add native TypeScript implementations for four `hq core` worktree and
363
+ handoff scripts behind the default-off `core-native-handoff` flag. The
364
+ original shell assets remain bundled as the rollback path.
365
+ - Add default-off native `hq core handoff finalize`, `post`, and `open-steps` commands with the staging scripts retained as the rollback path.
366
+ - Add a default-off `core-native-jobs` rollout gate for native `hq core jobs
367
+ schedule-parse` and `validate` commands.
368
+
369
+ ### Fixed
370
+
371
+ - `hq team-sync` keeps its successful no-team result, reports which company
372
+ directories are cloud-backed, and points to `hq sync pull --all` and
373
+ `hq sync status` for cloud-backed companies.
374
+ - An unconfirmed Outpost pickup acknowledgement keeps its mirror queued with
375
+ `outcome_unknown` and its command id. Reconcile uses a strict owner snapshot;
376
+ it marks the mirror `remote_lost` only after the 15-minute grace when the
377
+ owner confirms the lane is missing. Unreachable owners remain counted.
378
+
379
+ ### Fixed
380
+
381
+ - Confirm primary-dispatched Outpost profile recovery when it is queued for
382
+ reconcile, and sync the cleared recovery state to the primary lane mirror.
383
+ - Cache-first `hq lanes list` now allows one detached Outpost summary refresh
384
+ per HQ root at a time, avoiding duplicate work from overlapping list calls.
385
+
386
+ ### Fixed
387
+
388
+ - The lanes hook reads only transcript bytes appended since its last check.
389
+ It still replays compaction messages and resets the offset when a transcript
390
+ is replaced or truncated.
391
+
392
+ ### Added
393
+
394
+ - `hq core ontology merge-copies --only <file>` handles only the copy -> original pairs listed in a JSON file and reports every other found pair as skipped (`not_listed`).
395
+
396
+ ### Changed
397
+
398
+ - The checkpoint ontology step always applies its ten quality rules (company
399
+ brief, annotation stripping on grok, grok-first backend, no link aliases,
400
+ first-name people, ambiguous concept links, dominant sibling link, hub
401
+ mention floor, concept-project link, named evidence). Their
402
+ `checkpoint.ontology.*` flags, on for everyone since 2026-09-29, are no
403
+ longer read.
404
+
405
+ ### Added
406
+
407
+ - Record company-scoped exposure for printed CLI plan-limit notices when the default-off `billing.limit-at-action-prompt` flag is enabled; count an upgrade engagement only after the user confirms opening the link.
408
+
409
+ ### Fixed
410
+
411
+ - `hq secrets` and other noninteractive person-token callers reuse a fresh same-principal session written by another process while a stale refresh is rejected.
412
+
413
+ ## [5.286.0] — 2026-09-29
414
+
415
+ ### Changed
416
+
417
+ - On Linux the daemon's sync runner writes its protocol output to a named
418
+ pipe, `~/.hq/daemon/protocol/sync.fifo`, instead of an anonymous pipe. With
419
+ `daemon.supervisor-handoff` on, an outpost daemon restart now hands sync to
420
+ the next daemon like the other services instead of stopping and restarting
421
+ it, and output the old daemon had not read reaches the new one. Other
422
+ platforms keep the anonymous pipe.
423
+
424
+ ## [5.285.0] — 2026-09-29
425
+
426
+ - Route eligible Linux CI jobs onto ARM runners while retaining existing test and platform gates.
427
+
428
+ ## [5.284.0] — 2026-09-29
429
+ - The existing Work Mesh MQTT subscriber can signal agent inbox wakes through a private local marker without persisting MQTT message contents.
430
+ - Add `hq agents jobs resume <uid> <jobId>` to re-enable paused agent job schedules.
431
+
432
+ ### Fixed
433
+
434
+ - Recover a queued Outpost lane held for `worker_profile_changed` with its
435
+ printed `hq lanes resume <id> --worker <profile>` command. The lane owner's
436
+ profile copy is authoritative: the command records an authorized re-pin in
437
+ history, leaves the lane queued for normal reconcile admission, and syncs the
438
+ cleared recovery state back to the primary mirror. Other queued lanes still
439
+ require `hq lanes admit`.
440
+
441
+ - A remote `hq lanes list` read no longer dispatches owner hire summaries,
442
+ capacity probes, or mirror snapshots to other Outposts. Two Outposts that
443
+ each held a lane placed on the other ran `hq lanes list --json` on each other
444
+ without end, which filled both boxes with SSM commands.
445
+ - `hq doctor` labels the detected agent runtime value as `Agent platform` in human output. The JSON platform field and schema are unchanged.
446
+
447
+ ### Fixed
448
+
449
+ - Refresh remote lane mirrors on hosts with an Outpost identity, while excluding
450
+ mirrors owned by that host. Resolve company attribution before checking the
451
+ mirror gate for refreshes and remote logs; unresolved lanes stay local.
452
+ Remote-read invocations skip refresh to prevent reciprocal Outpost fan-out.
453
+
454
+ ## [5.283.0] — 2026-09-29
455
+
456
+ ### Added
457
+
458
+ - `hq core ontology merge-copies --variants` merges two-file duplicate entity
459
+ groups whose names differ only in case, spacing or punctuation, keeping the
460
+ spaced name. Behind `checkpoint.ontology.merge-variants` (off by default).
461
+
462
+ ## [5.282.0] — 2026-09-29
463
+
464
+ ### Added
465
+
466
+ - Add native TypeScript handlers for `hq core knowledge-prefs` and `hq core
467
+ policy age-report`, `retire`, and `frontmatter`, gated by the default-off
468
+ `core-native-policy` flag. Bundled shell assets remain available for rollback
469
+ during the first release.
470
+
471
+ ### Changed
472
+
473
+ - Pin the third-party package setup action in the fast-route benchmark workflow to its resolved commit.
474
+ - When the default-off `lanes.outpost-snapshot-cache` flag is enabled,
475
+ `hq lanes list` returns the last cached Outpost hire summaries immediately
476
+ and refreshes stale or missing summaries in the background. JSON rows show
477
+ snapshot age and stale/loading markers; text output includes a short stale or
478
+ loading note. `--fresh` waits for current owner summaries. Validated Outpost
479
+ snapshots live for three seconds; failed reads or lock acquisition are not
480
+ cached.
481
+
482
+ ### Fixed
483
+
484
+ - `hq lanes reconcile` admits every queued lane that fits its caps in one pass
485
+ once CPU throttle clears or the starvation bound is reached.
486
+ - Reconcile compares cumulative CPU counters between passes and records the
487
+ measurement source; a queued Outpost lane with a changed worker profile now
488
+ reports the expected and actual hashes plus the senior re-pin command without
489
+ blocking later eligible lanes.
490
+
491
+ ## [5.281.0] — 2026-09-29
492
+
493
+ ### Added
494
+
495
+ - Add native TypeScript handlers for six `hq core ontology` commands. The new path is gated by `core-native-ontology`, which defaults off; the original scripts stay bundled for rollback.
496
+
497
+ ### Fixed
498
+
499
+ - The default-off `lanes.remote-done-mirror` hq-flags gate refreshes nonterminal
500
+ Outpost mirrors before hire admission and during reconcile. It copies the
501
+ owner's terminal state and envelope summary to the primary. Unreachable
502
+ mirrors stay counted and are reported as unverified. `hq lanes logs` reads
503
+ logs from the owning Outpost.
504
+
505
+ ## [5.280.0] — 2026-09-29
506
+
507
+ ### Fixed
508
+
509
+ - Single-lane commands for Outpost-hosted lanes use a configurable pickup wait,
510
+ defaulting to 120 seconds. `hq lanes list` capacity probes use a separate
511
+ 15-second timeout. A lane ID with a registered host suffix routes to that
512
+ Outpost first.
513
+ - hq group-grants outbound help now makes --group required. hq auth status
514
+ displays token expiry as a UTC time and relative duration.
515
+
516
+ ## [5.279.0] — 2026-09-29
517
+
518
+ ### Fixed
519
+
520
+ - Claude keep-alive resumes use the same account selection as manual resumes,
521
+ including profile pins and the optional recent-use tiebreak. If no eligible
522
+ account can be selected, the lane resumes on its current account and records
523
+ the failure.
524
+
525
+ ## [5.278.0] — 2026-09-29
526
+
527
+ ### Changed
528
+
529
+ - The CI and no-hermes pull request checks use read-only repository access, and CI pins its third-party actions to fixed commits. The fast-route benchmark workflow is pinned in a follow-up.
530
+
531
+ ### Added
532
+
533
+ - Reconcile can stop an over-budget same-user search process descended from a
534
+ running lane when `rg`, `grep`, `ugrep`, or `ag` disables ignores on a broad
535
+ HQ root, or `find` searches a broad root without a shallow-depth or prune
536
+ exemption. The `lanes.runaway-tool-guard` hq-flags key is off by default. A
537
+ stopped search records its command and duration, then gets a notice to narrow
538
+ the search.
539
+
540
+ - Add the default-off `checkpoint.ontology.hub-mention-floor` hq-flags key.
541
+ When it is on, checkpoint ontology apply rejects a knowledge link to a
542
+ non-person entity that 50 or more other entity files link to when the input
543
+ names it fewer than 2 times in the text the model read (the chunk's line
544
+ range of the annotation-stripped copy when there is one). Concept links
545
+ redirected to a project are checked the same way. The rejection is reported
546
+ as `hub_under_mentioned`.
547
+
548
+ ## [5.277.0] — 2026-09-29
549
+
550
+ ### Fixed
551
+
552
+ - `hq lanes accounts list` and `accounts balance` now report a Claude account
553
+ whose home is missing on the current host and show the `set-home` repair
554
+ command. Balance exits non-zero for an enabled account in that state. On
555
+ Linux, account login stores a host-specific home and requires `--home` when
556
+ an existing account only has a shared home.
557
+ - Claude account balancing can use the default-off
558
+ `lanes.claude-account-balance-signals` hq-flags key to break equal live-lane
559
+ counts by the age of each account's latest completed lane run when provider
560
+ percentage data is unavailable.
561
+
562
+ ### Added
563
+
564
+ - Add a default-off `cli.secrets-env-fast-path` hq-flags route for `hq secrets
565
+ env`. It skips the full CLI graph while reusing the existing credential,
566
+ usage-audit, server authorization, and offline-cache behavior.
567
+ - `hq lanes list --json` accepts repeatable `--lane` filters, `--active`, and
568
+ owner-only hire-hierarchy snapshots. Remote lane lookup now requests the
569
+ needed hierarchy once per Outpost invocation and falls back to an unfiltered
570
+ list when an older owner CLI rejects a new filter. Internal snapshot switches
571
+ stay out of normal help and the generated command catalog.
572
+ - Add the default-off `checkpoint.ontology.dominant-sibling-link` hq-flags key.
573
+ When it is on, checkpoint ontology apply moves a knowledge link from an entity
574
+ whose name another type also holds to the same-name entity that other entity
575
+ files link to most. The move needs at least three times the inbound links and
576
+ at least five. An example is project Build Your Own AGI moving to the concept,
577
+ or the numbered copy `hq-core 2` moving to `hq-core`. Moves are reported
578
+ under `dominant_sibling_redirects`, and no entity file is written.
579
+ - Add the default-off `lanes.running-superseded-message-delivery` hq-flags key
580
+ so messages can reach otherwise messageable superseded lanes outside the done
581
+ and interrupted states. Accepted messages include a warning; done and
582
+ interrupted lanes keep the existing senior and successor checks.
583
+ - `hq core delegate resolve`, `pickup`, `repo`, `secrets`, and `transfer` are
584
+ available through native implementations when the default-off
585
+ `core-native-delegate` flag is enabled; the bundled scripts remain as the
586
+ rollback path.
587
+
588
+ - `hq lanes set <lane> --model <model> --effort <level> [--reason <text>]`
589
+ changes the model or effort a lane uses from its next resume, including the
590
+ keep-alive resume of a done lead. Before, keep-alive always resumed on the
591
+ recorded values, so a lead's model could not change without racing it. The
592
+ lane itself or its senior may run it; each change is kept in
593
+ `settings_history` and shown by `hq lanes show`.
594
+ - `hq daemon sync` reports runner ownership and health, starts an immediate sync pass, pauses or resumes sync, and sets per-company sync mode. The daemon waits for an existing desktop runner to release its lease before starting its own.
595
+ - `hq lanes interrupt <lane-id>` stops a running lane's turn and leaves it
596
+ `interrupted` (reason `operator_interrupt`) with its provider session, so
597
+ `hq lanes resume` continues it. Keep-alive does not resume it. The command
598
+ records the session id from the interrupted turn's output, holds the
599
+ provider's admission lock until the worker has stopped, and reports
600
+ `resumable: false` with a stderr warning when the turn produced no session id.
601
+ - An operator `hq lanes resume` clears keep-alive's `terminal_state` block, so
602
+ keep-alive can continue the lane after that turn.
603
+
604
+ ### Changed
605
+
606
+ - `hq lanes stop` on a running lane warns on stderr that the lane is killed and
607
+ cannot be resumed, names `hq lanes interrupt`, and adds `terminal: true` and
608
+ `resumable: false` to its JSON output, including for Outpost lanes stopped
609
+ from the primary.
610
+ - The lane drain hook avoids loading the lanes module graph when no lane is
611
+ resolved or its drop box is empty, while continuing to record tool activity
612
+ and using the full drain path whenever delivery or replay may be needed.
613
+
614
+ ### Fixed
615
+
616
+ - Doctor command tests use temporary home and state directories and skip the
617
+ live integrations inventory, so their results do not depend on a developer's
618
+ local HQ state.
619
+ - Outpost resume account moves forward the primary's hire-grant context through
620
+ the owner-side session move. The owner checks the current senior and hire
621
+ capacity before starting the worker.
622
+ - Security: `hq dm inbox --json` and agent-side raw message output omit the delegated `actingContext` object.
623
+
624
+ ## [5.276.0] — 2026-09-28
625
+
626
+ ### Added
627
+
628
+ - Suggest inviting a teammate after the billing link in an over-limit Starter
629
+ notice for a one-member company, behind the default-off
630
+ `cli.limit-invite-teammate-v1` flag.
631
+ - Add a default-off native route for `hq core timeout-guard`, backed by a
632
+ private company flag snapshot and a paired CI latency benchmark.
633
+
634
+ ### Changed
635
+
636
+ - Starter setup guidance now says it includes one integration.
637
+
638
+ ### Fixed
639
+
640
+ - `hq core checkpoint` no longer loses the company files of a checkpoint that
641
+ was queued behind a busy sibling, behind the `checkpoint.ontology.queued-touches`
642
+ flag (off by default). The queued checkpoint records its company files, and
643
+ the next sibling run adds them to the ontology plan. A run whose own
644
+ checkpoint names no company takes the ontology step for the company whose
645
+ files have waited longest.
646
+ - `hq feedback bug|feature` validates report content and the serialized request
647
+ size before uploading screenshots or logs, avoiding orphaned attachments when
648
+ the server would reject the submission.
649
+
650
+ - Reconcile clears a stale `superseded` keep-alive block when no active successor
651
+ remains; the five-minute minimum retry delay still applies. The block is
652
+ cleared even when the lead then waits on backoff or a full queue, and the
653
+ clear does not move a done lead's retry clock past its done envelope.
654
+
655
+ ## [5.275.0] — 2026-09-28
656
+
657
+ ### Fixed
658
+
659
+ - `hq lanes` accepts full Claude model ids such as `claude-sonnet-5-5` and
660
+ `claude-opus-5-5` (spawn, `resume --from-failed`, account moves) when
661
+ `claude --help` names only the aliases. Before, the model check refused them
662
+ with `model_unsupported`.
663
+
664
+ ### Added
665
+
666
+ - Track CLI feature events behind the default-off `cli.feature-used-telemetry-v1`
667
+ hq-flags key with a separate one-time disclosure.
668
+
669
+ - Outpost daemons can take over running services after a CLI update instead
670
+ of restarting all of them, behind the `daemon.supervisor-handoff` flag (off
671
+ by default). On Linux, the updated daemon adopts the services the previous
672
+ one left running and replaces only the ones whose command changed, one at a
673
+ time. Bots finish their running turns first. hq-cloud services keep running,
674
+ and the remote-control hosts restart their session once it is quiet. This
675
+ needs the systemd unit from this release: run `sudo hq daemon install` again
676
+ on each outpost.
677
+ - Company owners can turn the checkpoint Stop gate off or on for their company:
678
+ `hq company settings set --checkpoint-gate-enabled false|true`. Any member can
679
+ read the value with `hq company settings get`. The Stop gate reads a local
680
+ cache (`~/.hq/cache/checkpoint-gate/<company>.json`, refreshed in the
681
+ background at most every ten minutes by `hq core checkpoint-gate-setting
682
+ --refresh`) and skips the checkpoint block only when the session's company has
683
+ the gate turned off. Unset, unreachable with no cache, and sessions with no
684
+ company keep today's behaviour; `HQ_CHECKPOINT_GATE` still wins. Gated by the
685
+ hq-flag `checkpoint.gate.company-setting` (default off).
686
+
687
+ ### Changed
688
+
689
+ - The systemd system unit now uses `KillMode=process`, so systemd signals only
690
+ the daemon. The daemon still stops its services on `systemctl stop`, and it
691
+ stops any service left over from a crashed daemon before starting new ones.
692
+
693
+ ### Fixed
694
+
695
+ - `hq lanes create --placement auto` now runs on the caller when it is the best
696
+ capacity candidate. It matches the host id, machine identity or registered
697
+ Outpost id. Explicit `--outpost` self-targets still return
698
+ `outpost_self_target`.
699
+ - `hq sync status` validates an explicit `--hq-root` and continues to read
700
+ journals from the configured state directory, which it now prints.
701
+ - Root daemon tests use a temporary system adopted-record file; the CLI still
702
+ defaults to `/var/lib/hq/daemon/adopted.json`.
703
+
704
+ ## [5.274.1] — 2026-09-28
705
+
706
+ ### Fixed
707
+
708
+ - With lineage-aware supersession enabled, same-profile workers under the same
709
+ session senior no longer supersede each other. The recorded senior can
710
+ message its worker if it is later superseded.
711
+
712
+ ## [5.274.0] — 2026-09-28
713
+
714
+ ### Fixed
715
+
716
+ - `hq lanes grant` and other senior-authorized actions treat a missing `senior`
717
+ key in valid session metadata as `user`; explicit non-user values still refuse
718
+ authorization with a reason.
719
+ - Native Outpost message and resume routes now carry the owner's hire hierarchy,
720
+ authorize local-host resume contexts on their owner, and continue lane lookup
721
+ when another registered Outpost is unavailable.
722
+
723
+ ### Added
724
+
725
+ - Guide interactive CLI users to their first work-bearing sync and confirm it
726
+ once, behind the `cli.first-sync-next-step` HQ flag.
727
+ - Add `hq core commands --json` for the registered command catalog and guard the fast path, sibling references, and packaged assets.
728
+ - Add a corpus recorder and differential runner for scaffold migration scripts.
729
+ - Add `hq deploy comments list` and `read` for comments on apps in the caller's org.
730
+ - Checkpoint ontology: behind `checkpoint.ontology.named-evidence` (off by
731
+ default), a knowledge link to the company's own company entity, or a
732
+ concept linked to its same-name project, needs evidence that names it as a
733
+ word. A name that only appears inside a path, domain, handle or tag, such as
734
+ `indigoai-us/hq` or `scope: company:indigo`, is rejected as
735
+ `unnamed_in_evidence` (CO-57).
736
+
737
+ ### Fixed
738
+
739
+ - Add byte-for-byte checks for files fetched by `hq files get` and for
740
+ `company.yaml` after cloud demotion, using hq-core-staging's company seed.
741
+
742
+ ### Changed
743
+
744
+ - Internal: moved the move, move-target and placement subcommands out of
745
+ `src/commands/lanes.ts`; no behaviour change.
746
+
747
+ ## [5.273.0] — 2026-09-28
748
+
749
+ ### Fixed
750
+
751
+ - `hq doctor --fix` rechecks after each repair and applies newly found fixes
752
+ for up to three passes. It reports each repair's pass and lists every backup
753
+ restore command.
754
+ - `hq doctor --fix --json` includes each repair's pass and backup, and its
755
+ restore command now undoes changes from every repair pass.
756
+ - Wrapped merge commands now pass through both hold and review checks. If a
757
+ merge command cannot be parsed, it is allowed with an unresolved repository
758
+ when no enabled hold or review check applies.
759
+ - A superseded worker still accepts messages from its recorded senior or a
760
+ successor lead in the same company and project. Company identity is resolved
761
+ from the lane or its project when the lane record has no company.
762
+ - `hq lanes orphans` resolves null-company lanes through their senior chain and
763
+ can list unresolved lanes with `--unscoped`. Idle user-senior lanes without
764
+ open stories are reported after `--user-idle-hours` (default 72).
765
+
766
+ ### Added
767
+
768
+ - `hq doctor` checks whether the installed CLI meets the scaffold's declared
769
+ `requiresHqCli` version floor.
770
+
771
+ ### Removed
772
+
773
+ - Removed the dead `lanes.tracker` record and import commands. Existing project
774
+ tracker files stay in place; `hq lanes checks` and `hq lanes report` retain
775
+ read-only access to the records they use.
776
+
777
+ ## [5.272.0] — 2026-09-28
778
+
779
+ ### Added
780
+
781
+ - Add `hq core ontology merge-copies`, gated by
782
+ `checkpoint.ontology.merge-copies`. It merges each `<name> N.md` entity copy
783
+ into its own original (aliases, back-references, relationship links and
784
+ signal count), repoints links to the copy, and with `--delete` removes merged
785
+ copies from the vault. Dry run by default.
786
+
787
+ ## [5.271.0] — 2026-09-28
788
+
789
+ ### Fixed
790
+
791
+ - `hq lanes create --outpost` reads `lanes.outpost-load-balancing` for the
792
+ resolved company, so enabled personal worker profiles can run on an Outpost.
793
+ - Resolve host-suffixed lanes created on a registered Outpost for grant,
794
+ message, and resume commands while keeping senior authorization on the primary.
795
+ - `hq lanes move-target` keeps the company placement gate, and unfiltered
796
+ `hq lanes list` resolves the active company for host capacity.
797
+
798
+ ## [5.270.0] — 2026-09-28
799
+
800
+ ### Fixed
801
+
802
+ - Company billing links in CLI plan-limit notices no longer depend on the
803
+ rollout flag.
804
+
805
+ ### Removed
806
+
807
+ - Removed stale gate language from hire-grant command help. Enforcement remains
808
+ unconditional; backfill remains dry-run only.
809
+
810
+ ### Fixed
811
+
812
+ - `hq files unshare --with` now accepts the same person UID principals as direct grants.
813
+ - The update gate no longer retries failed Windows installs through `sudo -n`.
814
+
815
+ ## [5.269.0] — 2026-09-28
816
+
817
+ ### Fixed
818
+
819
+ - Keep-alive no longer treats cancelled, killed, or failed project workers as
820
+ replacement leads, and recognizes descendants whose session senior belongs
821
+ to the lead.
822
+ - Company-scoped lane flags resolve ownership from a complete lane company,
823
+ then a complete mesh company, then the lane's unique project company.
824
+
825
+ - Merge hold and review checks unwrap commands through common shell wrappers.
826
+ Unparseable merge commands are blocked only when an enabled hold or review
827
+ enforcement applies.
828
+
829
+ ### Added
830
+
831
+ - Add `hq lanes review` records and optional reviewed-head checks to
832
+ `hq lanes hold check` for senior lanes.
833
+
834
+ ## [5.268.0] — 2026-09-28
835
+
836
+ ### Fixed
837
+
838
+ - `hq core ontology duplicates` now proposes the original entity file as the
839
+ survivor when it ties with its numbered copies (`hq-core 2.md`). Before, the
840
+ path tiebreak picked the copy, which it did for 129 of 530 Indigo groups.
841
+
842
+ ## [5.267.0] — 2026-09-28
843
+
844
+ - Company billing links opened by CLI plan-limit flows now carry cli_limit attribution into checkout telemetry.
845
+
846
+ ### Fixed
847
+
848
+ - Local bots now read the idle inbox backoff flag with a 2 s budget. The
849
+ 150 ms budget timed out from home networks, so bots kept polling every 2 s
850
+ even when the flag was on for them.
851
+
852
+ ## [5.266.0] — 2026-09-28
853
+
854
+ ### Added
855
+
856
+ - `hq daemon run --host desktop` lets the HQ desktop app run the daemon as its
857
+ own child process. The daemon then runs sync even though the app is open, and
858
+ records the app as its host in `state.json`. Older per-service installers
859
+ such as `hq mesh daemon install` treat a hosted daemon as installed and hand
860
+ their service to it.
861
+
862
+ ## [5.265.0] — 2026-09-28
863
+
864
+ ### Added
865
+
866
+ - The `lanes.kr-freshness` flag tracks each manager KPI in a runtime-owned
867
+ ledger and queues one corrective resume for each stalled KPI set. The
868
+ freshness window defaults to six hours and can be set with
869
+ `kr_freshness_hours` in the lanes config.
870
+
871
+ ### Fixed
872
+
873
+ - Reconcile resolves a missing lane company for keep-alive and supersession
874
+ flag reads, and watch applies the same resolution to keep-alive checks.
875
+ Unusable project ownership remains unresolved; reconcile reports
876
+ `keep_alive_company_unresolved` or `keep_alive_flag_off` instead of silently
877
+ skipping those candidates.
878
+
879
+ ## [5.264.0] — 2026-09-28
880
+
881
+ ### Removed
882
+
883
+ - The `checkpoint.ontology.entity-hints` flag and its per-input `known_entities`
884
+ list. It was never turned on outside measurement runs.
885
+
886
+ ## [5.263.0] — 2026-09-28
887
+
888
+ ### Fixed
889
+
890
+ - The version gate compares offers with the running CLI and recognizes
891
+ generated global shims before reporting a PATH shadow.
892
+
893
+ ## [5.262.0] — 2026-09-28
894
+
895
+ ### Added
896
+
897
+ - The `checkpoint.ontology.concept-project-link` flag (off by default) lets
898
+ checkpoint ontology link a knowledge concept whose alias is ambiguous to the
899
+ one project with the same canonical name, such as HQ. It writes nothing.
900
+
901
+ ### Fixed
902
+
903
+ - `hq doctor --live-runtimes` uses a Windows `.cmd` shim only when the sibling file exists.
904
+ - Flag reads validate company UIDs before registry requests while preserving local
905
+ override precedence; Work Mesh ignores malformed UID overrides.
906
+
907
+ ## [5.261.0] — 2026-09-28
908
+
909
+ ### Fixed
910
+
911
+ - Standing keep-alive leads now resume stories that remain open. Completed
912
+ stories resume only on standing leads with queued work, and reconcile reports
913
+ why other completed lanes stay idle.
914
+
915
+ ## [5.260.0] — 2026-09-28
916
+
917
+ ### Added
918
+
919
+ - The `lanes.blocker-freshness` flag checks manager blockers after each turn.
920
+ It resumes once for stale blockers, then alerts the senior on a repeated
921
+ stale set. The window defaults to four hours and can be set with
922
+ `blocker_freshness_hours` in the lanes config.
923
+
924
+ ### Fixed
925
+
926
+ - Blocker-freshness escalations now reach session seniors through the existing
927
+ monitor-session inbox. Work Mesh is an optional signal, not delivery, and a
928
+ failed delivery is retried on a later stale turn.
929
+
930
+ ## [5.259.0] — 2026-09-28
931
+
932
+ ### Fixed
933
+
934
+ - The checkpoint stop gate now recognizes path-qualified `hq core checkpoint`
935
+ commands without treating lookalike text as a checkpoint.
936
+ - `hq doctor --live-runtimes` now invokes Windows npm shims through their `.cmd`
937
+ entry points.
938
+
939
+ ## [5.258.0] — 2026-09-28
940
+
941
+ ### Fixed
942
+
943
+ - Envelope repair runs through the currently installed CLI so a long-lived
944
+ watcher cannot use stale worker-profile validation.
945
+ - Updated the external-agent CLI guide to match the kit services, probe checks,
946
+ shipped skills, and MCP tools.
947
+ - Fixed the Docker agent-kit launcher to supervise configured services through
948
+ `hq agent kit run all`.
949
+ - `hq packages list` and `hq packs list` return an error when run outside an HQ tree.
950
+ - `hq index collections` prints a summary when no collections are expected or registered.
951
+
952
+ ## [5.257.0] — 2026-09-28
953
+
954
+ ### Added
955
+
956
+ - Add `hq lanes hold` to record company-scoped repository merge holds and
957
+ refuse recognized merge commands while the `lanes.repo-merge-hold` gate is
958
+ enabled. Hold history and release reasons stay in the local record. Checks
959
+ fail open with a named error when they cannot parse a command or read a hold,
960
+ and recognize pull-request URLs plus assignment, `env`, and `timeout` forms.
961
+
962
+ ## [5.256.0] — 2026-09-28
963
+
964
+ ## [5.255.0] — 2026-09-28
965
+
966
+ ### Changed
967
+
968
+ - Internal: moved watch, monitor-check, and wait handlers to src/commands/lanes-watch.ts; behavior is unchanged.
969
+
970
+ ## [5.254.0] — 2026-09-28
971
+
972
+ ### Added
973
+
974
+ - The `lanes.manager-status-gate` flag checks a manager lane's declared
975
+ status file after each provider turn. It queues at most one corrective
976
+ resume if the file was not updated. An invalid or out-of-boundary mapping
977
+ disables the gate for that lane and lets the lane start.
978
+
979
+ ### Fixed
980
+
981
+ - The end-of-session work report is no longer dropped when the background
982
+ transcript watcher polls late or adopts a session after a restart. A
983
+ synthesized `turn_end` now carries the transcript time, capped at now, and
984
+ is never earlier than the last event sent for the session.
985
+ - `hq db sql --remote` is hidden because remote SQL is not available in this
986
+ CLI build. Existing scripts get a clear error, and local SQL remains
987
+ available without `--remote`.
988
+ - `hq secrets` and `hq run` now use cached secrets during a temporary server outage, up to each secret’s configured cache lifetime. The default is three hours; revoked and high-security secrets still fail closed.
989
+
990
+ ## [5.253.0] — 2026-09-27
991
+
992
+ ### Added
993
+
994
+ - `hq publish --handle <handle>` publishes a pack under one of the creator handles your
995
+ account owns, for accounts that own more than one. The server refuses a handle you do
996
+ not own with a plain message. `--as` is unchanged and cannot be combined with `--handle`.
997
+
998
+ ## [5.252.0] — 2026-09-27
999
+
1000
+ ### Added
1001
+
1002
+ - `hq report publish` takes a snapshot of the finished page and publishes it as the report's preview image, using a browser already installed on the computer. A page that names its own preview image keeps it. If no browser is found the report publishes without a preview.
1003
+
1004
+ ## [5.251.0] — 2026-09-27
1005
+
1006
+ ## [5.250.0] — 2026-09-27
1007
+
1008
+ ### Fixed
1009
+
1010
+ - A Work Mesh session bound to a project and task keeps the binding episode the
1011
+ - An enrolled agent that sets `HQ_AGENT_DIR` now acts as that agent in every
1012
+ command, not only under `hq agent`. `hq dm` and `hq secrets` used to look
1013
+ for a person's session instead, find none, and open a browser sign-in. On
1014
+ the Runneth pilot that hung the first reply for four minutes. Only the
1015
+ explicit variable counts, so a bot living beside its owner on the owner's
1016
+ computer never takes over the owner's commands.
1017
+ - On an agent host (Linux, no terminal, no display), a missing session now
1018
+ fails at once with the fix instead of opening a browser sign-in that
1019
+ nobody can complete.
1020
+ - `hq agent enroll --name` no longer overrides `HQ_AGENT_DIR`. A bot that
1021
+ pointed its identity at persistent storage had it written under `$HOME`
1022
+ instead, where a rebuild erases it, with a message claiming a person was
1023
+ signed in when nobody was.
1024
+ - `wake.log` no longer records the wake command's standard output. A wake
1025
+ command's normal output (a routine record, an echoed prompt) is not
1026
+ diagnostic, and on a share without permissions the log is readable by
1027
+ anything with access to the share. Errors are still logged.
1028
+ - Bots now reply in the group or channel a message came from. Their inbox
1029
+ shows the channel id, `hq dm <channelId>` and the `hq_dm_send` tool post by
1030
+ that id (including unnamed group DMs), and the wake and inbox instructions
1031
+ say to answer there. Before, a bot answered a group message with a private
1032
+ DM to the sender, so the group never heard back. The instructions also tell
1033
+ bots not to answer another bot's greetings or sign-offs, so two bots stop
1034
+ acknowledging each other in a loop.
1035
+ - An agent whose identity files were moved or copied no longer goes silent an
1036
+ hour later. The credentials file records where the host key lives; when that
1037
+ path is gone and the key sits beside the credentials file, the CLI now points
1038
+ at it before running any agent command. `hq agent probe` also fails when the
1039
+ host key is missing, instead of passing on a cached token and leaving the
1040
+ agent to fail at its next refresh.
1041
+
1042
+ ## [5.249.1] — 2026-09-27
1043
+
1044
+ ## [5.249.0] — 2026-09-27
1045
+
1046
+ ### Fixed
1047
+
1048
+ - Lanes flags with no registry row now quietly resolve off. Actual registry
1049
+ read failures still emit their `flag_read_failed` event.
1050
+ - Plan-limit notices prefer the current usage-limits upgrade URL and can use
1051
+ the company console billing page as a default-off hq-flags fallback.
1052
+
1053
+ ## [5.248.0] — 2026-09-27
1054
+
1055
+ ### Changed
1056
+
1057
+ - Internal: moved the message and resume subcommands out of src/commands/lanes.ts; no behaviour change
1058
+
1059
+ ## [5.247.1] — 2026-09-27
1060
+
1061
+ ### Fixed
1062
+
1063
+ - `hq core hq-session set company_slug` accepts case-sensitive ASCII company
1064
+ IDs that match company directory names and writes the same value to the
1065
+ session scope capability.
1066
+ - `hq bot create setup` stops before creating a bot when the reserved setup slug exists but its record cannot be verified.
1067
+
1068
+ ## [5.247.0] — 2026-09-27
1069
+ ### Changed
1070
+
1071
+ - The default-off `lanes.supersession-lineage-aware` flag lets a worker's lane
1072
+ keep-alive and message delivery continue when its newer lane senior or a
1073
+ same-profile sibling under that senior would otherwise look like a replacement.
1074
+ - Keep-alive setup reads lineage settings before provider locks, and message
1075
+ eligibility rechecks lane and retirement state after that read.
1076
+
1077
+ ### Changed
1078
+
1079
+ - `hq agent kit install` no longer implies the `@reboot` crontab entry is
1080
+ enough on its own. The entry is installed and does restart the kit on an
1081
+ ordinary host, but on a container whose root filesystem is rebuilt each boot
1082
+ both cron and the CLI are erased along with it. The line now says so and
1083
+ says what to do instead.
1084
+
1085
+ ## [5.246.0] — 2026-09-27
1086
+
1087
+ ### Fixed
1088
+
1089
+ - Every file the agent kit writes now works on storage that has no file
1090
+ permissions. A bot whose agent home is a CIFS/SMB share (Azure Files) gets
1091
+ EPERM from `chmod`, and the writes were hitting that one at a time: the wake
1092
+ config could not be saved, so the bot could never be told mail had arrived,
1093
+ and any message carrying an attachment failed on download. All of them now
1094
+ go through one writer that asks for owner-only permissions, reports whether
1095
+ they actually took, and carries on either way. The same writer makes those
1096
+ writes atomic, so the inbox mirror, the seen/handled id lists, the kit
1097
+ config, the heartbeat record and saved attachments can no longer be read
1098
+ half-written by a concurrent poller. A chmod refused for any reason other
1099
+ than a missing capability is still a real error.
1100
+ - Picks up hq-cloud 6.18.10, which publishes the token refresh lock without
1101
+ hard links so a bot on a network share can mint a token at all.
1102
+
1103
+ ## [5.245.0] — 2026-09-27
1104
+
1105
+ ### Fixed
1106
+
1107
+ - Work Mesh sessions registered without a bound project (unresolved,
1108
+ needs_project, needs_task) no longer store the register receipt as their
1109
+ binding episode, and `hq mesh context bind-project` clears it. The server
1110
+ dropped every session-event batch carrying that id, so turn and session ends
1111
+ never landed and no work report posted. Existing state files are repaired on
1112
+ the next flush.
1113
+
1114
+ ## [5.244.0] — 2026-09-27
1115
+
1116
+ ### Fixed
1117
+
1118
+ - A bot whose agent home is on a network share can now mint a token. The
1119
+ refresh lock was a POSIX hard-link lock, and CIFS/SMB shares — Azure Files
1120
+ again — do not implement `link()` at all, so every mint failed with
1121
+ ENOTSUP and took the whole probe down with it: no heartbeat ever posted
1122
+ and the inbox poller retried and failed every 15 seconds. The lock now
1123
+ falls back to an exclusive create, which gives the same guarantee and
1124
+ works there. Contention still surfaces as EEXIST on both paths, so
1125
+ stale-owner reclamation is unchanged, and a link that fails for any other
1126
+ reason is still a real error.
1127
+
1128
+ ### Changed
1129
+
1130
+ - The setup bot no longer posts "This one takes a minute. I'll reply here as
1131
+ soon as it's done." when a step runs long. Other bots keep their notice.
1132
+ - After the bundled setup bot connects its first app, it says "Great, <Tool> is
1133
+ connected" with a link to the company's integrations page on hq.computer.
1134
+ - The bundled setup bot invites teammates through the new-hire flow when HQ
1135
+ has it, and tells the person to have the invitee check their spam folder.
1136
+
1137
+ ## [5.243.0] — 2026-09-27
1138
+ ### Added
1139
+
1140
+ - `hq auth login` remembers the last provider used on this computer and shows the Cognito provider choice page on first login. Only the provider name is stored locally.
1141
+
1142
+ ### Changed
1143
+
1144
+ - Internal: moved the accounts, sessions and questions subcommands out of src/commands/lanes.ts; no behaviour change
1145
+
1146
+ ### Fixed
1147
+
1148
+ - Removed the unused `cli.network.force-ipv4` hq-flags lookup and forced IPv4
1149
+ startup path. The existing Node family-attempt timeout remains unchanged.
1150
+ - `hq auth login` continues when it cannot read or save the remembered provider. It prints a dim warning with the state path and error code; a save failure does not turn a successful sign-in into a login failure.
1151
+ - `hq doctor`, client health metadata, and feedback attachments now use the
1152
+ newest sync-log source from the desktop app or configured daemon directory.
1153
+ Daemon `HQ_DAEMON_DIR` overrides and log rotations are supported, and
1154
+ numeric runner error levels count in health metadata.
1155
+
1156
+ ## [5.242.0] — 2026-09-27
1157
+
1158
+ ### Changed
1159
+
1160
+ - Removed the completed `lanes.message-compaction-replay`,
1161
+ `lanes.outpost-question-visibility`, and
1162
+ `lanes.host-scoped-account-homes` gates. Their shipped behaviors now run
1163
+ unconditionally.
1164
+ - Account-home login and `set-home` no longer require an unrelated active
1165
+ company selection when `--company` is omitted; explicit `--company` values
1166
+ remain validated.
1167
+
1168
+ ### Fixed
1169
+
1170
+ - The `cli.install-path-compatibility` hq-flags key enables pnpm v11+ global-path recognition. On Windows, it also passes drive-path tarballs to tar by filename from the archive directory. The flag defaults to off.
1171
+
1172
+ ## [5.241.0] — 2026-09-27
1173
+
1174
+ ### Fixed
1175
+
1176
+ - A bot whose only persistent storage is a network share can now enroll.
1177
+ Enrollment wrote its credentials and then locked them to the owner, and on
1178
+ a CIFS/SMB share mounted with a fixed file mode — Azure Files is the one
1179
+ that found this — that last step fails outright. Enrollment died there,
1180
+ left a temp file holding the private key behind, and offered no way
1181
+ forward: the only writable alternative was storage a container rebuild
1182
+ erases.
1183
+
1184
+ The write now reports whether owner-only permissions actually took, rather
1185
+ than assuming they did, and `hq agent enroll` says plainly when they did
1186
+ not: the credential is readable by anything else with access to that
1187
+ share. The file is still requested owner-only, the result is read back
1188
+ from the filesystem instead of trusted, a refused chmod on ordinary
1189
+ storage still fails loudly, and a failed write no longer leaves the secret
1190
+ behind in a temp file.
1191
+ - Resume can keep a lane on its recorded account when it uses a CLI-selected
1192
+ model, even if that account's configured default differs. A lane without an
1193
+ account allowlist may use any otherwise eligible account.
1194
+ - With a worker-profile account pin, resume keeps a healthy recorded account
1195
+ that is allowed by the pin even when the pin includes other accounts and the
1196
+ recorded account's default differs from the lane's CLI-selected model.
1197
+
1198
+ ## [5.240.0] — 2026-09-27
1199
+
1200
+ ### Added
1201
+
1202
+ - `hq lanes` worker profiles can pin a registry persona from `worker.yaml`.
1203
+ The composed prompt includes the worker's instructions, skill paths, done
1204
+ criteria, and stop checkpoints. Registry approval requirements are passed to
1205
+ workers, enforced on external-action envelopes, and recorded through the new
1206
+ senior-only `hq lanes approve` command.
1207
+
1208
+ ## [5.239.0] — 2026-09-27
1209
+
1210
+ ### Added
1211
+
1212
+ - `hq core checkpoint` can skip a knowledge link to a concept entity whose
1213
+ name is also the name of an entity of another type, such as a concept
1214
+ `hq-secrets` beside a project `HQ Secrets`. The report lists the skipped
1215
+ link as rejected with reason `ambiguous_type`. Signal and session inputs,
1216
+ other links and new entities are unchanged. Behind the hq-flags flag
1217
+ `checkpoint.ontology.skip-ambiguous-concept-links`, off by default.
1218
+
1219
+ ## [5.238.0] — 2026-09-27
1220
+
1221
+ ### Added: Lane orphan reporting
1222
+
1223
+ - `hq lanes checks` includes an orphaned-lane check. The company-scoped
1224
+ `hq lanes orphans` report lists candidates without changing their state. Add
1225
+ `--stop --reason <text>` to stop candidates that remain orphaned on recheck
1226
+ and record the reason in lane history.
1227
+
1228
+ ## [5.237.0] — 2026-09-27
1229
+
1230
+ ### Added
1231
+
1232
+ - Lane-store creates and updates record their hq-cli version. User-invoked
1233
+ writes from older CLIs are refused, while background writers preserve newer
1234
+ stamps and record Outpost owner versions separately. `hq lanes checks` warns
1235
+ about newer stamps, and `HQ_LANES_ALLOW_OLDER_WRITE=1` provides a one-command
1236
+ override with a warning.
1237
+
1238
+ ## [5.236.0] — 2026-09-27
1239
+
1240
+ ### Changed
1241
+
1242
+ - The bundled setup bot introduces itself by the name the desktop app gives
1243
+ it. For someone who started their own company it offers, once, to put a copy
1244
+ of itself in Slack (on the Workforce plan, checked rather than guessed), and
1245
+ flags its finish card so the card offers it too. It never offers this to
1246
+ someone who joined an existing company.
1247
+
1248
+ - The bundled setup bot now starts by asking whether you want HQ explained
1249
+ before setup or want to jump straight in. Its explanation puts the agents
1250
+ you already use first (Claude Code, Codex, Cursor, agents in Slack, and
1251
+ other agents connected in the HQ console), then your team, then bots. It
1252
+ can walk you through a Slack agent, an outside agent, inviting a teammate,
1253
+ and sharing a connected app or a key. It checks your company's plan before
1254
+ talking about limits or prices instead of guessing, and it no longer says
1255
+ inviting or sharing needs a paid plan. Same change as the setup worker in
1256
+ hq-core.
1257
+ - The bundled setup bot can end a message with two to four suggested replies
1258
+ (likely answers to a closed question, or clear next steps) that the desktop
1259
+ app shows as reply buttons. It leaves them out when the answer is something
1260
+ only you can type, like a name or an email. Needs a desktop app that renders
1261
+ them.
1262
+
1263
+ ### Added
1264
+
1265
+ - `hq bot create --display-name <name>` gives a bot the human name people see
1266
+ in HQ (the DM list and how the bot introduces itself), up to 35 characters.
1267
+ The handle stays the key for every `hq bot` command, and the server slug is
1268
+ pinned to the handle, so the reserved setup bot and restore keep matching.
1269
+
1270
+ ### Fixed
1271
+
1272
+ - The setup bot no longer posts its notes to itself ("Now write the worker.")
1273
+ into the chat. A message it writes right before a tool call is dropped; only
1274
+ messages a turn ends on reach the person. When a step runs past 30 seconds
1275
+ it now says "This one takes a minute. I'll reply here as soon as it's done."
1276
+ - Bots no longer post a stray "(no reply)" right after a real message. The
1277
+ fallback counted only posts whose delivery had finished, so a message still
1278
+ being sent when the turn ended looked like silence.
1279
+
1280
+ ## [5.235.0] — 2026-09-27
1281
+
1282
+ ### Changed
1283
+
1284
+ - `hq lanes` blocker, KPI, OKR, and directive commands, checks, imports, and
1285
+ reports read and write records in each project's local `tracker/` directory.
1286
+ The retired Work Mesh tracker path and question index were removed. KPI and
1287
+ OKR approvals also verify and save any supplied answered question ID.
1288
+
1289
+ ### Fixed
1290
+
1291
+ - Removed the unused `cli.network.force-ipv4` hq-flags lookup and forced IPv4
1292
+ startup path. The existing Node family-attempt timeout remains unchanged.
1293
+
1294
+ ## [5.234.2] — 2026-09-27
1295
+
1296
+ ### Fixed
1297
+
1298
+ - The flag-registry worker now uses source embedded in the CLI, so package
1299
+ updates can no longer cause startup failures by removing its script.
1300
+
1301
+ ## [5.234.1] — 2026-09-27
1302
+
1303
+ ### Fixed
1304
+
1305
+ - A primary resume now confirms and syncs an Outpost lane queued during
1306
+ owner-side admission. (#926)
1307
+ - Outpost messages and account moves for children of primary-hosted lanes now
1308
+ carry the bounded hire-grant context required by the owner. (#926)
1309
+ - Outpost message resumes, moves, and admission queues now sync the returned
1310
+ owner lane record back to the primary. (#926)
1311
+
1312
+ ## [5.234.0] — 2026-09-27
1313
+
1314
+ ### Added
1315
+
1316
+ - A lane's senior can explicitly resume a failed lane's recorded provider
1317
+ session with `hq lanes resume --from-failed --reason`; the secret-scanned
1318
+ reason and recovered failure are recorded in lane history. Failed lanes
1319
+ continue to refuse ordinary messages. (#927)
1320
+
1321
+ ### Fixed
1322
+
1323
+ - `hq agents stop` says the stop was accepted and shows the status the API returns, instead of saying the agent has already stopped. (#922)
1324
+
1325
+ ## [5.233.0] — 2026-09-27
1326
+
1327
+ ### Added
1328
+
1329
+ - `hq lanes wait` exits on the first selected envelope, pending-question, or
1330
+ state change across the requested lanes. It uses a startup baseline and a
1331
+ bounded two-second poll interval.
1332
+
1333
+ ## [5.232.0] — 2026-09-27
1334
+
1335
+ ### Added
1336
+
1337
+ - `checkpoint.ontology.sync-gated` (off by default) turns the checkpoint
1338
+ ontology step on like `checkpoint.ontology`. Older CLI builds do not read it,
1339
+ so it can be turned on widely without them. With either flag on, the step runs
1340
+ only when the hq-cloud bundled with this CLI and the one the hq daemon runs
1341
+ are both 6.18.7 or later; otherwise it skips and says which copy is older.
1342
+ It also skips while the daemon's sync still runs from before its hq-cloud
1343
+ copy was installed. `hq core ontology apply` checks again before it writes and
1344
+ reports `sync_client_old` with the reason. Earlier hq-cloud releases pushed
1345
+ stale copies of deleted entities.
1346
+
1347
+ ## [5.231.1] — 2026-09-27
1348
+
1349
+ ### Fixed
1350
+
1351
+ - `hq crm entity upsert` checks CRM settings first and prints the enable hint without sending a write when CRM is disabled.
1352
+
1353
+ ## [5.231.0] — 2026-09-27
1354
+
1355
+ ### Added
1356
+
1357
+ - Behind the off-by-default `checkpoint.ontology.first-name-people` flag, the
1358
+ checkpoint ontology instructions tell the model to name a person by their
1359
+ first name when neither the input nor the company's entities give more,
1360
+ instead of leaving them out. With the flag on, apply also defers a one-word
1361
+ person whose word starts an existing person's fuller name or alias (`John`
1362
+ when `John Smith` exists), since the model cannot see the entity tree. With
1363
+ the flag off the instructions and apply are unchanged.
1364
+
1365
+ ## [5.230.2] — 2026-09-27
1366
+
1367
+ ### Fixed
1368
+
1369
+ - Resuming a terminal Outpost lane whose senior lives on the primary now checks
1370
+ hire-grant capacity on both hosts using the primary hierarchy, then syncs the
1371
+ running owner record back to the primary. An owner CLI that rejects the
1372
+ hierarchy context now fails with an upgrade-required error instead of retrying
1373
+ without the grant check.
1374
+
1375
+ ## [5.230.1] — 2026-09-27
1376
+
1377
+ ### Fixed
1378
+
1379
+ - A queued account move keeps its pending resume without reserving a running slot.
1380
+
1381
+ ## [5.230.0] — 2026-09-27
1382
+
1383
+ ### Added
1384
+
1385
+ - Behind the off-by-default `checkpoint.ontology.no-link-aliases` flag, a
1386
+ checkpoint ontology candidate that links to an existing entity no longer adds
1387
+ aliases to that entity's file. The plan records `link_aliases: false` and
1388
+ apply reports the link without writing. New entities keep their aliases.
1389
+ Most aliases written through links were other names the text mentioned next
1390
+ to the entity, such as `Publisher` on `indigo`.
1391
+
1392
+ ## [5.229.2] — 2026-09-27
1393
+
1394
+ ### Fixed
1395
+
1396
+ - Standing keep-alive leads now wait after done turns for drop-box messages,
1397
+ undelivered answers, or pending resumes; queued answers are included in the
1398
+ next turn.
1399
+ - An unreadable question record no longer aborts reconciliation of other lanes.
1400
+
1401
+ ## [5.229.1] — 2026-09-27
1402
+
1403
+ ### Fixed
1404
+
1405
+ - An authorized `hq lanes resume --worker` on an Outpost re-pins a changed
1406
+ worker profile before spawn, preserves the provider session, records the
1407
+ hash change in lane history, and syncs the resulting lane record to primary.
1408
+
1409
+ ## [5.229.0] — 2026-09-27
1410
+
1411
+ ### Added
1412
+
1413
+ - Behind the off-by-default `checkpoint.ontology.entity-hints` flag, each
1414
+ knowledge input in the checkpoint ontology plan lists up to 25 existing
1415
+ entities whose name appears in the text the model reads
1416
+ (`known_entities`). The model is told to use those names instead of naming a
1417
+ new entity, and to skip glossary or translation table rows, paths and names
1418
+ built from tags or slugs.
1419
+
1420
+ ## [5.228.4] — 2026-09-27
1421
+
1422
+ ### Fixed
1423
+
1424
+ - Account history now distinguishes automatic moves caused by a quota hold, an
1425
+ unavailable or logged-out account, or uneven load.
1426
+
1427
+ ## [5.228.3] — 2026-09-27
1428
+
1429
+ ### Fixed
1430
+
1431
+ - Work Mesh tracker rows use the local record fields. Missing blocker
1432
+ `opened_at` values use `createdAt`, and invalid mesh rows identify Work Mesh
1433
+ as their source.
1434
+ - KPI and OKR records retain their status when read from Work Mesh, including in
1435
+ `kpi list`, `okr list`, and `team --json` output.
1436
+
1437
+ ## [5.228.2] — 2026-09-27
1438
+
1439
+ ## [5.228.1] — 2026-09-27
1440
+
1441
+ ### Fixed
1442
+
1443
+ - Reparenting an Outpost lane from the primary now dispatches to the owner,
1444
+ where the hierarchy, tenant, depth, and enabled hire-grant checks are repeated.
1445
+ The primary syncs the changed lane and each descendant whose depth changed.
1446
+ `hq lanes show <lane-id>` refreshes that Outpost lane and its descendants
1447
+ from the owner, including senior history, depth, and grants. Lane sessions
1448
+ now share their lane's depth, and an SSM owner dispatch can change a
1449
+ user-senior lane's grant without allowing a lane caller to impersonate the
1450
+ user.
1451
+
1452
+ ## [5.228.0] — 2026-09-27
1453
+
1454
+ ### Changed
1455
+
1456
+ - Lane hire grants and Claude account balancing are always active.
1457
+ `backfill-grants --apply` refuses to write; dry-run output remains available.
1458
+
1459
+ ## [5.227.1] — 2026-09-27
1460
+
1461
+ ### Fixed
1462
+
1463
+ - `hq files browse` and `hq files search` no longer crash on vaults with many objects.
1464
+
1465
+ ## [5.227.0] — 2026-09-27
1466
+
1467
+ ### Added
1468
+
1469
+ - `hq lanes tracker`, `checks`, `import`, and `report` use the Work Mesh tracker
1470
+ store when `lanes.tracker-mesh` is enabled. Company questions are indexed and
1471
+ shared across hosts; reconcile polls for remote answers, wakes the owning lane,
1472
+ and stamps delivery once.
1473
+
1474
+ ## [5.226.0] — 2026-09-26
1475
+
1476
+ ### Added
1477
+
1478
+ - `hq staff reset-test-account <email>` wipes a designated test account through
1479
+ the hq-pro admin API. Defaults to a dry-run that lists what would be deleted;
1480
+ `--execute` prompts for the typed email confirmation before wiping, and
1481
+ `--yes` skips the prompt. Refuses to run for callers whose stored email is
1482
+ not on the staff list.
1483
+ - `hq staff test-account add|remove|list` manages the designated-test-account
1484
+ registry through the same admin API. `add` and `remove` require staff
1485
+ callers; `list` returns the current registry entries.
1486
+
1487
+ ### Fixed
1488
+
1489
+ - `hq lanes message` now probes the worker PID and start time before queueing.
1490
+ Watcher and reconcile recover accepted inbox messages through the same
1491
+ resume path after classifying an exited worker; undrained messages on done,
1492
+ killed, retired, or superseded lanes are archived as undeliverable.
1493
+ - Failed queued-message recovery restores unaccepted claims to the inbox and
1494
+ records the failure. Recovery also sees leftover draining and inflight files,
1495
+ and synchronous classification shares watcher ownership to prevent duplicate
1496
+ repair and resume work.
1497
+ - `hq agent enroll --name <bot>` now works on a computer where a person is signed in. It enrolls into `~/.hq-agent/<bot>/` and refuses only if that folder already holds an agent. Before, it refused because of the person's login and told you to pass `--name`, which you already had. Enrolling with no name on such a computer (the default local folder) had the same bug.
1498
+ - Pushes made as an agent now record the agent as the uploader. Before, on a computer where a person was also signed in, the files were stamped with the person's email and id.
1499
+ - When the server refuses some paths in a push (for example, another member's file in a private folder `foo/`), the warning now says the server refused them, in `hq sync push`, `hq sync now` and `hq sync push --all`. Before, it said the files were outside your write access and to ask an admin for a grant.
1500
+
1501
+ ## [5.225.0] — 2026-09-26
1502
+
1503
+ ### Changed
1504
+
1505
+ - Local bots can use the default-off `agents.inbox-poll-backoff-local-cli`
1506
+ gate to increase idle inbox polling from 2 seconds to a capped 30-second
1507
+ backoff. New messages and completed turns reset the cadence.
1508
+
1509
+ ## [5.224.0] — 2026-09-26
1510
+
1511
+ ### Added
1512
+
1513
+ - `hq lanes import --company <slug> --dry-run` previews tracker records from
1514
+ the mapped team ledgers and status files. `--apply` writes stable, proposed
1515
+ records; later runs update changed imports and leave unchanged records alone.
1516
+
1517
+ ### Fixed
1518
+
1519
+ - When `hq daemon pin-hq-cloud` names a version that is not installed yet, the
1520
+ daemon keeps running the newest installed hq-cloud instead of falling back
1521
+ to the older copy bundled with the CLI, and logs a warning naming the
1522
+ missing version. The updater then installs the pinned version and the
1523
+ daemon switches to it. Before, a pin that did not match the installed copy
1524
+ silently ran the bundled copy, which on one outpost meant a months-old sync
1525
+ runner without recent fixes.
1526
+
1527
+ ## [5.223.0] — 2026-09-26
1528
+
1529
+ ### Fixed
1530
+
1531
+ - Manual resume and explicitly opted-in keep-alive reconcile can move a lane
1532
+ off a disabled or logged-out Claude account on the same host, preserving the
1533
+ provider session, provider, and model. `hq lanes watch` reports each
1534
+ logged-in-to-logged-out transition once with the affected lane ids. The
1535
+ watcher stops polling terminal keep-alive lanes when no resume can run and
1536
+ shares one local account probe across matching lanes per poll. Quota and
1537
+ model failures keep their existing account-selection path and reason.
1538
+
1539
+ - Client-health flag checks refresh expired person identity and use machine
1540
+ identity when available. Identity refresh has a separate bound, and failed
1541
+ lookups keep the existing doctor fallback path.
1542
+
1543
+ ## [5.222.0] — 2026-09-26
1544
+
1545
+ - Checkpoint ontology, behind `checkpoint.ontology.multi-writer` (off by
1546
+ default): entity versions that sync set aside after losing a push race are
1547
+ merged back at the start of each plan (aliases, back-references, the higher
1548
+ `signal_count`, the later `last_updated`). Any other difference keeps both
1549
+ and leaves the set-aside copy, and an entity deleted since is not
1550
+ re-created. Every entity file the step writes is recorded in
1551
+ `.hq/ontology-outbox/<company>.json`. The apply report counts duplicate
1552
+ entity groups, and `hq core ontology duplicates --company <slug> [--json]`
1553
+ lists them.
1554
+
1555
+ ## [5.221.0] — 2026-09-26
1556
+
1557
+ ### Added
1558
+
1559
+ - `hq lanes report` prints the company-scoped owner report and `hq lanes team
1560
+ <slug>` shows OKRs, KPI trends, work, blockers, and questions. Successful
1561
+ reports save their per-company report time for the next report and team page.
1562
+ PR, release, and deployment references on stories may be strings, integers,
1563
+ or objects. Only timestamped objects count as activity. Invalid rows appear
1564
+ under their team's errors, set exit status 2, and leave the saved report time
1565
+ unchanged.
1566
+ ## [5.220.0] — 2026-09-26
1567
+
1568
+ ### Fixed
1569
+
1570
+ - Lane questions now resolve their company from the lane's project before using
1571
+ the active HQ company. Project ownership is used only when unique; otherwise
1572
+ active-company selection applies without choosing a project owner. Legacy
1573
+ questions can be answered with `--company <slug>` when lane or project
1574
+ ownership cannot be resolved.
1575
+
1576
+ - CLI updates no longer interrupt background flag refreshes when the
1577
+ self-contained worker rollout is enabled.
1578
+
1579
+ ## [5.219.0] — 2026-09-26
1580
+
1581
+ ### Added
1582
+
1583
+ - `hq lanes checks` reports six company-scoped tracker checks, prints the
1584
+ records that need attention, and exits with status 2 when any check fails.
1585
+ Input errors return a path-bearing error envelope with status 1. Teams come
1586
+ from `juniors.json` mappings or projects with blocker, KPI, OKR, or directive
1587
+ tracker records, so unrelated project PRDs are not read. Thresholds can be
1588
+ adjusted in `personal/lanes/config.json`.
1589
+
1590
+ ### Fixed
1591
+
1592
+ - `hq lanes` questions now record their company and `delivered_at` when a lane
1593
+ receives an answer. Secret-shaped question text and answer notes are rejected
1594
+ before storage. Existing questions without a company remain readable.
1595
+
1596
+ - Legacy personal-store answer notes continue to load from personal storage
1597
+ after their lane gains mesh-company attribution.
1598
+
1599
+ ## [5.218.0] — 2026-09-26
1600
+
1601
+ ### Fixed
1602
+
1603
+ - The reconcile summary now lists opted-in lanes it could not resume and why.
1604
+ Stderr provides reason-specific guidance and recommends reapplying opt-in only
1605
+ when that can help.
1606
+
1607
+ ## [5.217.0] — 2026-09-26
1608
+
1609
+ ### Fixed
1610
+
1611
+ - Keep-alive resumes a lane interrupted by `exited_with_partial_output` when
1612
+ the interruption followed its explicit opt-in. Quota and host-loss
1613
+ interruptions, login failures, and stopped lanes remain ineligible.
1614
+
1615
+ ## [5.216.0] — 2026-09-26
1616
+
1617
+ ### Fixed
1618
+
1619
+ - Lane watchers keep valid questions from a malformed `ask` envelope when
1620
+ repair is skipped, cannot start, or still produces invalid output. The lane
1621
+ stores the validation errors, and recovered question context includes them.
1622
+ Repair spawns ignore unknown profile metadata and log the field names.
1623
+ `hq lanes create` and `hq lanes resume --worker` keep strict validation.
1624
+
1625
+ - `hq lanes` stops sending status updates for stories missing from the project
1626
+ board. The watcher reports the refusal once per lane run and keeps appending
1627
+ lane events.
1628
+
1629
+ ## [5.215.0] — 2026-09-26
1630
+
1631
+ ### Fixed
1632
+
1633
+ - hq-cli 5.211.0 could resume a retired lead from its worker profile's
1634
+ `keep_alive` value. Reconcile now requires an explicit lane opt-in written
1635
+ after the latest envelope, and skips retired or superseded leads.
1636
+
1637
+ ## [5.214.0] — 2026-09-26
1638
+
1639
+ ### Added
1640
+
1641
+ - `hq lanes keep-alive <lane-id> --on|--off` lets a lane's senior opt in on
1642
+ the host that owns the lane.
1643
+
1644
+ - `hq doctor` now checks the last hour of the sync runner log for stuck
1645
+ realtime lag, cloud permission refusals, runner restart loops, device-limit
1646
+ backoff, and repeated conflicts. Client health reports send these to Sentry
1647
+ as reason codes and counts only.
1648
+
1649
+ ### Fixed
1650
+
1651
+ - The desktop app's first sync push now uploads files inside private folders.
1652
+ The credentials the app hands to `hq sync push --creds-from-stdin` cannot
1653
+ write there directly, so the push also passes the vault config to hq-cloud
1654
+ 6.18.5, which sends those files through presigned uploads.
1655
+
1656
+ ## [5.213.0] — 2026-09-26
1657
+
1658
+ ### Fixed
1659
+
1660
+ - `hq lanes accounts set-home` and `login` return
1661
+ `company_selection_failed` for company-selection errors without a stack
1662
+ trace. Other resolver failures remain `internal` and include a stack trace.
1663
+
1664
+ ## [5.212.0] — 2026-09-26
1665
+
1666
+ ### Changed
1667
+
1668
+ - `checkpoint.ontology.ignore-annotations` now strips annotator entity lists from the ontology inputs only when the checkpoint sibling runs on grok. On a machine that falls back to claude or codex the model reads the annotated inputs as before, because Claude on stripped inputs lost 0.139 recall on the gold-v2 set.
1669
+
1670
+ ## [5.211.0] — 2026-09-26
1671
+
1672
+ ### Fixed
1673
+
1674
+ - Reconcile now applies `keep_alive` from a recorded worker profile to older
1675
+ lanes whose lane field is unset. An explicit lane value wins, unreadable
1676
+ profiles fail closed and are reported, and `lanes show --json` identifies
1677
+ the source of its effective value.
1678
+
1679
+ ## [5.210.0] — 2026-09-26
1680
+
1681
+ ### Fixed
1682
+
1683
+ - Lane messages delivered during a provider turn are replayed after transcript
1684
+ compaction when `lanes.message-compaction-replay` is enabled, limited to that
1685
+ provider turn. Monitor events keep their data framing.
1686
+
1687
+ ## [5.209.0] — 2026-09-26
1688
+
1689
+ ### Added
1690
+
1691
+ - Behind the off-by-default `checkpoint.ontology.grok-backend` flag, `hq core checkpoint --backend auto` tries grok first for the payload company and falls back to the usual order when grok is missing or crashed last time. The detached ontology plan reads the flag and records it in the company state directory, so the foreground checkpoint makes no network call; a flag change applies from the checkpoint after the next plan.
1692
+ - Behind the off-by-default `checkpoint.ontology.ignore-annotations` flag, the checkpoint ontology plan gives the model a copy of each knowledge input without the old cloud annotator's `entities:` front-matter list and entity links, which were mostly wrong and which the model copied.
1693
+
1694
+ ## [5.208.0] — 2026-09-26
1695
+
1696
+ ### Fixed
1697
+
1698
+ - `hq lanes accounts set-home` and `login` accept `--company <slug|uid>` and
1699
+ scope the host-account-home flag read to that company.
1700
+ - The `hq daemon` updater now installs new hq-cloud patch releases. It looks up the newest release in the bundled major version and installs that exact version. Before, `npm install` with a version range kept an installed copy that already matched the range, so the updater stayed on 6.18.1 after 6.18.2 was published. A failed lookup is reported as a failed update and installs nothing.
1701
+
1702
+ ## [5.207.0] — 2026-09-26
1703
+
1704
+ ### Added
1705
+
1706
+ - The SessionStart hook can send client health reports straight to Sentry when
1707
+ the company enables `client-health.sentry-direct`. Reports exclude doctor
1708
+ text and company names. With the flag off, the hook keeps using the existing
1709
+ feedback route.
1710
+
1711
+ ## [5.206.0] — 2026-09-26
1712
+
1713
+ ### Fixed
1714
+
1715
+ - Startup recovery no longer waits the full install deadline when an unchanged retired hq-cli package remains beside the install. Node 24 ESM loader file-read `ENOENT` errors also enter the existing recovery path and receive a report tag.
1716
+
1717
+ ## [5.205.0] — 2026-09-26
1718
+
1719
+ ### Added
1720
+
1721
+ - `hq lanes create` and `hq lanes resume` accept `--keep-alive`. When the
1722
+ default-off `lanes.lead-keep-alive` flag is enabled, an opted-in lead lane
1723
+ resumes after a `done` turn that leaves its story open. The first resume
1724
+ waits at least five minutes; later attempts back off to an hour and stop
1725
+ after 24 consecutive attempts.
1726
+ `hq lanes show --json` reports the counter and next eligible time.
1727
+ - Worker profiles accept boolean `keep_alive`. Add this key only after the
1728
+ hq-cli release with this change is installed; older CLIs reject unknown
1729
+ profile metadata.
1730
+
1731
+ ### Fixed
1732
+
1733
+ - Claude result text that says `Not logged in` or `Please run /login` now marks
1734
+ a lane failed with `account_not_logged_in` when no envelope was written.
1735
+
1736
+ ## [5.204.0] — 2026-09-26
1737
+
1738
+ ### Added
1739
+
1740
+ - `hq lanes accounts set-home` adds a host-specific home to the synced lane
1741
+ account registry. Account status and Claude balancing now distinguish a
1742
+ missing home from a signed-out account.
1743
+
1744
+ ## [5.203.0] — 2026-09-26
1745
+
1746
+ ### Added
1747
+
1748
+ - `hq monitor` runs a script in the background and delivers each line it prints to a lane or to a Claude, Codex, or Grok session, marked as monitor data. `--persistent` keeps it running past the 30-minute limit of Claude's Monitor tool and cannot be combined with `--timeout`. An idle target gets a check-in every 55 minutes so its next turn still reads from the prompt cache. The command is off unless the `monitor.enabled` flag is on.
1749
+ - `hq lanes message` and `hq lanes resume` now reach a Grok lane that has finished or is blocked. The lane records Grok's session id when it exits, and the follow-up continues that session with `grok --single --resume`. A Grok lane still cannot move to another Grok account.
1750
+
1751
+ ## [5.202.1] — 2026-09-26
1752
+
1753
+ ### Fixed
1754
+
1755
+ - Security: `hq integrations` now masks credentials in MCP endpoint URLs in
1756
+ text, JSON, connect hints, errors, and `hq doctor` integration remediation.
1757
+ API requests still use the original endpoint URL.
1758
+
1759
+ ## [5.202.0] — 2026-09-26
1760
+
1761
+ ### Added
1762
+
1763
+ - Behind the off-by-default checkpoint.ontology.company-brief flag, the checkpoint ontology plan writes company-brief.md from the local entities, signals and source index, with no model call; recent signals are dated through their source.
1764
+
1765
+ ## [5.201.4] — 2026-09-25
1766
+
1767
+ ### Fixed
1768
+
1769
+ - Claude account balancing on lane resume now respects the attached worker
1770
+ profile's account pin, skips accounts pinned to a different model, and treats
1771
+ `--account` naming the current account as a keep request for message/resume.
1772
+
1773
+ ## [5.201.3] — 2026-09-25
1774
+
1775
+ ### Fixed
1776
+
1777
+ - A flag-registry worker whose startup fails because the working directory was deleted or its package files were being replaced no longer creates a Sentry issue. Other flag-registry worker errors remain visible with a worker tag.
1778
+
1779
+ ## [5.201.2] — 2026-09-25
1780
+
1781
+ ### Changed
1782
+
1783
+ - The checkpoint ontology plan tells the model to name a person by the full name the input or the company's entities give, not a first name alone.
1784
+
1785
+ ## [5.201.1] — 2026-09-25
1786
+
1787
+ ### Fixed
1788
+
1789
+ - Outpost grant checks now include child lanes from the owning Outpost. Owner
1790
+ records take precedence over duplicate primary records, and each grant
1791
+ command reads the owner lane list once.
1792
+ - Outpost grant checks re-read owner lanes under the hire lock and use the
1793
+ validated Outpost CLI override for the lane-list probe.
1794
+
1795
+ ## [5.201.0] — 2026-09-25
1796
+
1797
+ ### Added
1798
+
1799
+ - `hq daemon pin-hq-cloud <version>` pins the daemon-managed hq-cloud version to an exact semver within the bundled major, including prereleases; `--clear` removes the pin.
1800
+
1801
+ ### Fixed
1802
+
1803
+ - The daemon carries `Environment=` assignments from Linux `outpost-sync.service` drop-ins into its sync unit.
1804
+
1805
+ ## [5.200.1] — 2026-09-25
1806
+
1807
+ ### Fixed
1808
+
1809
+ - `hq lanes questions show` and `answer` preserve `question_not_found` when
1810
+ Outpost question visibility is disabled, even if an owned Outpost lane has
1811
+ no company. `questions list --all-hosts` also omits the company-unavailable
1812
+ error while the gate is off.
1813
+
1814
+ ## [5.200.0] — 2026-09-25
1815
+
1816
+ ### Fixed
1817
+
1818
+ - `hq lanes list` now fetches Outpost hire summaries once per host and reuses
1819
+ them for 60 seconds. Missing or invalid owner rows keep the local summary and
1820
+ include a warning.
1821
+
1822
+ ## [5.199.0] — 2026-09-25
1823
+
1824
+ ### Added
1825
+
1826
+ - `hq lanes questions list --all-hosts` reads questions from Outposts that own
1827
+ this primary's lanes. Rows include the host, and an unavailable Outpost is
1828
+ named in `errors` while local questions remain available. Remote rows use the
1829
+ audience computed by the owner, and eligible Outpost reads run with bounded
1830
+ concurrency. The primary can show and answer an Outpost-only question, then
1831
+ save the owner's confirmed answer locally. Cross-host lookup requires the
1832
+ company-scoped `lanes.outpost-question-visibility` hq-flags gate. Use
1833
+ `--company` to limit a list or answer to one company.
1834
+
1835
+ ### Fixed
1836
+
1837
+ - Registry-backed hq-flags readers now use the central registry endpoint when
1838
+ `HQ_FLAGS_API_URL` is unset or blank. Explicit endpoints and local overrides
1839
+ keep precedence, and process-wide gates retain their legacy fallback until a
1840
+ registry snapshot is ready.
1841
+
1842
+ ## [5.198.1] — 2026-09-25
1843
+
1844
+ ### Fixed
1845
+
1846
+ - Session questions stay with live or unknown sessions until their configured
1847
+ unanswered timeout; only a positive `session_end` advances immediately. When
1848
+ there is no Work Mesh entry, hq-cli checks Claude transcript metadata in
1849
+ configured account homes without opening transcript contents, using the
1850
+ newest matching mtime. Metadata errors remain visible and do not block the
1851
+ independent timeout. The timeout defaults to 600 seconds. A running-lane
1852
+ answer reports `awaiting_next_tool_call` after its durable dropbox append.
1853
+
1854
+ ## [5.198.0] — 2026-09-25
1855
+
1856
+ ### Added
1857
+
1858
+ - `hq lanes blocker`, `kpi`, `okr`, and `directive` commands record project
1859
+ tracker data locally when the company-scoped `lanes.tracker` gate is enabled.
1860
+ KPI and OKR sets remain proposals until explicitly approved, and resolved
1861
+ blockers are hidden unless listed with `--all`.
1862
+
1863
+ ### Fixed
1864
+
1865
+ - A local bot no longer posts "I didn't finish that — I was restarted while I
1866
+ was working on it" into a room on messages nobody addressed to it. An
1867
+ unmentioned room turn interrupted by a restart or owner stop is now acked
1868
+ and cleared silently on the next start; a saved final answer for that turn
1869
+ is still posted, and DMs and @-mentioned room turns still get the notice
1870
+ (2026-09-25 hq-launch-ga-testing incident). Markers written by older
1871
+ versions without the new `silenceable` field keep today's behaviour.
1872
+ - A grok turn that exits non-zero with a whole-stdout pretty-printed JSON
1873
+ envelope (rather than NDJSON events) now logs the real error text —
1874
+ `result` / `error.message` / `subtype` — instead of the last characters of
1875
+ the JSON tail (`"costUsdTicks" | } | "numTurns" | }`). Log only; never
1876
+ posted to a person.
1877
+
1878
+ ## [5.197.0] — 2026-09-25
1879
+
1880
+ ### Fixed
1881
+
1882
+ - Concurrent QMD reindex runs after sync and `hq index sync` are serialized behind the shared lock when the default-off `qmd.reindex-single-flight` hq-flags canary is enabled. A skipped sync reports no successful update.
1883
+ - Process-wide hq-flags gates now resolve with the active company's identifier when a company is bound.
1884
+ - Concurrent `hq lanes` updates now wait for an in-progress project story-ledger
1885
+ lock receipt, avoiding transient `story_ledger_lock_invalid` errors.
1886
+
1887
+ ## [5.196.0] — 2026-09-25
1888
+
1889
+ ## [5.195.1] — 2026-09-25
1890
+
1891
+ ### Fixed
1892
+
1893
+ - Local bots can no longer loop with each other in a room. Three guards close
1894
+ - A checkpoint run from inside an HQ lane no longer passes the lane's identity
1895
+ (`HQ_LANE_ID`, `HQ_PROJECT_ID`, `HQ_STORY_ID`, `HQ_POLICY_WORKER_DIR`) to the
1896
+ background sibling. Before, the lane drop-box hook delivered the lane's
1897
+ operator messages to the sibling instead of the lane.
1898
+
1899
+ ## [5.195.0] — 2026-09-25
1900
+
1901
+ ### Fixed
1902
+
1903
+ - Work Mesh transcript-watch quiet `session_end` for hook-covered sessions now
1904
+ uses the shared sequence and counts hook turns (#818).
1905
+
1906
+ ## [5.194.1] — 2026-09-25
1907
+
1908
+ ### Fixed
1909
+
1910
+ - `hq core ontology apply` no longer creates a new entity that is probably an
1911
+ existing one. A candidate whose alias is already another entity's name or
1912
+ alias, or a person whose name contains every word of an existing person's
1913
+ full name (for example "Chaudhry Hassaan Saleem" and "Hassaan Saleem"), is
1914
+ held back and reported as a suspect duplicate.
1915
+
1916
+ - `hq auth` and other CLI fetches can opt into IPv4-first networking through the
1917
+ default-off `cli.network.force-ipv4` hq-flags gate. The canary is bounded and
1918
+ keeps explicit Node network options in control.
1919
+
1920
+ ## [5.194.0] — 2026-09-25
1921
+
1922
+ ### Added
1923
+
1924
+ - `hq core checkpoint` can now maintain the company ontology, the job the
1925
+ cloud ontology gardener did. It is off unless the hq-flags flag
1926
+ `checkpoint.ontology` is on for the checkpoint's company
1927
+ (`HQ_FLAG_CHECKPOINT_ONTOLOGY` is the local override). When a checkpoint
1928
+ names a company, the background sibling runs `hq core ontology plan`, which
1929
+ checks the flag and lists the company knowledge and signal files that
1930
+ changed since the last run, within a fixed input and token budget. The
1931
+ sibling writes entity candidates for those files, and
1932
+ `hq core ontology apply` validates them and writes them. It updates an
1933
+ existing entity rather than creating a duplicate, and keeps entity ids in
1934
+ the cloud's format. It writes only to the checkpoint's own company and never
1935
+ follows a symlink. It adds a back-reference to each signal that names an
1936
+ entity, skipping signals the gardener already linked, and a rerun changes
1937
+ nothing. Files under `@{key}` audience folders are not read.
1938
+
1939
+ ## [5.193.1] — 2026-09-25
1940
+
1941
+ ### Fixed
1942
+
1943
+ - Work Mesh project sync maps ledger states (`todo` to `queued`, `in_progress` to
1944
+ `in_progress`, `in_review`/`verification`/`blocked` to `review`, and `done`/`dropped`
1945
+ to `done`), with explicit `status` taking precedence and `passes` preserved. PRD
1946
+ sync emits review transitions; Board readers preserve unknown status strings and
1947
+ ignore unknown ledger states. `hq mesh project ensure --dry-run` previews merged
1948
+ Board statuses without writing.
1949
+ - Claude lane balance reports now normalize Outpost lane-list and queued show
1950
+ views before strict lane-record validation, including `no_story_reason: null`.
1951
+
1952
+ ## [5.193.0] — 2026-09-25
1953
+
1954
+ ### Fixed
1955
+
1956
+ - `hq secrets set` now handles a closed stdin descriptor during terminal cleanup.
1957
+
1958
+ ### Improved
1959
+
1960
+ - Sentry reports for failed skill-wrapper replacement now include bounded ownership-state tags.
1961
+
1962
+ ## [5.192.2] — 2026-09-25
1963
+
1964
+ ### Fixed
1965
+
1966
+ - Create, resume, automatic repair, and apply now read
1967
+ `lanes.claude-account-balance` from hq-flags. `HQ_FLAG_*` remains the local
1968
+ override, and a registry read failure keeps the gate off. The
1969
+ `accounts balance --json` report includes `balance_gate_enabled`.
1970
+ - `hq lanes accounts balance --apply` now honors each lane's company-scoped
1971
+ gate, skips disabled company lanes, and rechecks the gate before moving.
1972
+
1973
+ ## [5.192.1] — 2026-09-25
1974
+
1975
+ ### Fixed
1976
+
1977
+ - `hq lanes questions answer` now resumes an asking lane as soon as its final
1978
+ pending question is answered. When capacity or throttling prevents a start,
1979
+ hq-cli queues the lane with an `answered_questions` resume and the answer
1980
+ timestamp. It sends Outpost answers to the lane's owner and reports any
1981
+ unanswered sibling questions or a named wake error. After the owner confirms
1982
+ the answer, the primary's question copy is marked answered as well.
1983
+
1984
+ ## [5.192.0] — 2026-09-25
1985
+
1986
+ ### Added
1987
+
1988
+ - `hq agents models` lists cloud-agent catalog entries by provider and supports JSON output.
1989
+ Provision and update validate model IDs against the catalog. They use the cached
1990
+ catalog when the endpoint is unavailable, and rely on server validation if no cache exists.
1991
+
1992
+ ### Fixed
1993
+
1994
+ - `hq report adopt` checks whether scheduled jobs are enabled for the company before creating a cloud job, and explains when the server rejects a disabled job.
1995
+
1996
+ ## [5.191.0] — 2026-09-25
1997
+
1998
+ ### Fixed
1999
+
2000
+ - `hq agents provision` now rejects an invalid `--slug` before sending the agent create request.
2001
+
2002
+ ## [5.190.0] — 2026-09-25
2003
+
2004
+ ### Added
2005
+
2006
+ - `hq lanes` validates story references against project `prd.json` files and records
2007
+ explicit `--no-story` reasons. When `lanes.story-ledger` is enabled, lane state,
2008
+ blockers, questions, and PR links sync back to project stories. Terminal history
2009
+ writes are atomic and retry-safe. Stale-lock cleanup reclaims abandoned ownerless
2010
+ locks after their directory ages while preserving fresh replacements.
2011
+ `hq lanes status --project` summarizes workers, PRs, blockers, questions, and story
2012
+ counts.
2013
+
2014
+ ### Fixed
2015
+
2016
+ - `hq bot promote` accepts server-signed upload URLs without SSE headers when the bucket supplies encryption. SSE header names are checked case-insensitively, and any supplied encryption must be a complete SSE-KMS pair.
2017
+ - Company slug lookup errors now point to the supported `hq sources entities` command.
2018
+
2019
+ ### Added
2020
+
2021
+ - QMD native-binding startup failures after sync can emit an actionable warning
2022
+ when the `qmd.reindex-startup-warning` hq-flags canary is enabled. The flag
2023
+ defaults off, and sync still succeeds when indexing cannot run.
2024
+
2025
+ ## [5.189.0] — 2026-09-25
2026
+
2027
+ ### Added
2028
+
2029
+ - `hq lanes resume` and `hq lanes message` accept `--effort <level>` for the next resumed provider turn. Attaching a worker profile applies its configured effort when the command has no effort flag. With neither option, the lane keeps its recorded effort. Outpost commands forward the flag and report `outpost_effort_unsupported` when the remote CLI rejects it.
2030
+
2031
+ ## [5.188.1] — 2026-09-25
2032
+
2033
+ ### Fixed
2034
+
2035
+ - `hq lanes grant` now applies grants for Outpost-hosted lanes on their owner.
2036
+ The primary sends a bounded hierarchy snapshot and its evaluated hq-flags
2037
+ decision; the owner revalidates the authorized senior, applies carve,
2038
+ occupancy, and terminal-parent checks, then syncs the changed record to the
2039
+ primary. Dispatched lane errors include sanitized owner details.
2040
+
2041
+ ## [5.188.0] — 2026-09-25
2042
+
2043
+ ### Added
2044
+
2045
+ - `hq lanes accounts balance --provider claude` reports per-host account load,
2046
+ login state, and proposed moves. `--apply` moves only sessions between turns
2047
+ and requires the default-off `lanes.claude-account-balance` hq-flags gate.
2048
+ Claude lane creation now considers live lane counts across readable hosts,
2049
+ including lanes whose real host identity is local on an Outpost. It checks
2050
+ login on the target host, reports unknown login state separately, and records
2051
+ the selection and any host gaps on the lane. Explicit `--account` choices
2052
+ remain in effect. Automatic resume repair runs only while the balance gate is
2053
+ enabled; with the gate off, disabled and logged-out accounts keep their usual
2054
+ refusal behavior without reading other hosts.
2055
+
2056
+ ## [5.187.0] — 2026-09-25
2057
+
2058
+ ### Fixed
2059
+
2060
+ - `hq mesh context prd-sync` sends only stories whose Board status changed (a first snapshot of already-done stories is not re-emitted). Quiet `session_end` summaries read Claude Code `result` lines and Codex/Grok `item.completed` agent messages, not only `type=assistant` turns.
2061
+
2062
+ ## [5.186.0] — 2026-09-25
2063
+
2064
+ ### Changed
2065
+
2066
+ - A local bot's scheduled jobs now live with the bot. `hq bot jobs` stores them in the bot's folder (`jobs.json`) and the running bot fires them itself, through the same path as a cloud-fired job. No cloud setting is involved. A run missed while the computer slept or the bot was stopped runs once as a catch-up; a job never overlaps itself. The 25-job cap per bot is unchanged.
2067
+
2068
+ ## [5.185.1] — 2026-09-25
2069
+
2070
+ ### Fixed
2071
+
2072
+ - `lanes.hire-grants` resolves its company-scoped hq-flags value before gating.
2073
+ A valid local override wins; missing rows or failed reads leave enforcement
2074
+ off. Backfills check the unscoped value and each target company's value
2075
+ before writing. `hire_grant_exhausted` names the grantor and includes the
2076
+ same recovery message in JSON and on stderr.
2077
+
2078
+ ## [5.185.0] — 2026-09-25
2079
+
2080
+ ### Fixed
2081
+
2082
+ - Local bots no longer post their no-reply signal, narration, blank messages, or raw model errors into rooms. On a room message that does not mention the bot, in-between messages and the working notice are held until the turn ends, and nothing is posted when the reply is the `{"action":"no_reply"}` signal or empty. Any model failure on such a turn (not only a Grok `reasoning_only` empty response, but every model error) is now silent instead of leaking "I didn't finish that — <model> stopped with an error: <raw excerpt>" into the room. When the turn does produce content, the held in-between messages are posted alongside the final answer, so a bot that answers mid-turn and ends with a short sign-off (claude/codex) no longer loses the answer; a Grok final that just concatenates the in-between messages still posts once with no duplication. The signal is never posted as progress anywhere. DMs and @-mentions still stream and still get a reply; a `reasoning_only` failure there now says "the model returned no answer" instead of the raw internal error, and other failures there keep the existing "did not finish" message. The room prompt also tells the model to produce no output rather than explain that it is staying silent.
2083
+
2084
+ ## [5.184.0] — 2026-09-25
2085
+
2086
+ ### Fixed
2087
+
2088
+ - Work Mesh transcript-watch now emits `session_end` for hook-covered sessions that have already been quiet for 10 minutes when first seen (the live skip path that left `skippedHook=411 ended=0`). Held/spool rescans stamp last hook activity from each event's `at`, not the scan clock, so leftover `held.jsonl` lines cannot reset the quiet timer.
2089
+ - Quiet `session_end` (and SessionEnd flush) send an optional one-sentence summary of the last assistant reply (~140 chars, tokens and secrets-file paths redacted), plus git repo, branch, and PR URLs when cheap.
2090
+
2091
+ ### Added
2092
+
2093
+ - `hq lanes` validates story references against project `prd.json` files and records
2094
+ explicit `--no-story` reasons. When `lanes.story-ledger` is enabled, lane state,
2095
+ blockers, questions, and PR links sync back to project stories. Terminal history
2096
+ writes are atomic and retry-safe. Stale-lock cleanup reclaims abandoned ownerless
2097
+ locks after their directory ages while preserving fresh replacements.
2098
+ `hq lanes status --project` summarizes workers, PRs,
2099
+ blockers, questions, and story counts.
2100
+
2101
+ - `hq doctor --json` includes stable sync `reasonCode` enums. Client-health reports add `checkId: reasonCode` pairs only when the company-scoped `client-health-sync-reason-codes` hq-flags gate is enabled. `hq doctor --fix --json` reports refresh-sync outcomes without raw error details.
2102
+
2103
+ - Repair known stale QMD collection paths behind the default-off `qmd.collection-path-repair` hq-flags canary while preserving collection metadata.
2104
+
2105
+ ## [5.183.0] — 2026-09-25
2106
+
2107
+ ### Added
2108
+
2109
+ - `hq core sentry report` can attach bounded hook-timeout timing context to Sentry events when the company-scoped `hook-timeout-debug-context` flag is enabled. The flag defaults off.
2110
+
2111
+ ## [5.182.0] — 2026-09-24
2112
+
2113
+ ### Fixed
2114
+
2115
+ - `hq mesh daemon status` now asks the service manager whether the daemon is loaded (`launchctl print` on macOS, `systemctl --user is-active` on Linux). Before, it never probed and always reported "installed (not loaded)" or "installed (inactive)", even while the daemon was running.
2116
+
2117
+ ## [5.181.0] — 2026-09-24
2118
+
2119
+ ### Changed
2120
+
2121
+ - `hq daemon` runs the session host from the hq-cloud copy it keeps up to date (hq-cloud's `hq-outpost-session-host`, when that copy has it), the same way it already runs sync and the outpost heartbeat, and restarts it after an hq-cloud update. Session-host fixes, such as starting on an Outpost that signs in with machine credentials, now reach boxes without an hq CLI release.
2122
+
2123
+ ## [5.180.0] — 2026-09-24
2124
+
2125
+ ## [5.179.1] — 2026-09-24
2126
+
2127
+ ### Added
2128
+
2129
+ - `hq dm send` now takes `--audience <human|agent|both>` so a bot or operator
2130
+ can declare who a DM is for, and the `hq_dm_send` bot tool accepts the same
2131
+ optional field. Local bot turns tag in-between progress messages as `agent`
2132
+ and the final reply as `human` by default, so status chatter stays out of a
2133
+ person's inbox while the answer they need still reaches them. `hq dm inbox`
2134
+ and `hq dm thread` mark agent-audience messages with an `[agent]` tag.
2135
+
2136
+ ### Fixed
2137
+
2138
+ - Windows checkpoint stamps now use atomic replacement and bounded retries for
2139
+ transient filesystem errors, so a brief lock does not abort the checkpoint.
2140
+
2141
+ ## [5.179.0] — 2026-09-24
2142
+
2143
+ ### Fixed
2144
+
2145
+ - `hq integrations connect --client-id` with a Google OAuth client (`*.apps.googleusercontent.com`) now warns that the client must be of type "Web application" and prints the redirect URI to register. A "Desktop app" client cannot accept HQ's hosted callback, and Google reports that only after the browser is open.
2146
+
2147
+ ## [5.178.0] — 2026-09-24
2148
+
2149
+ ### Fixed
2150
+
2151
+ - Work Mesh transcript-watch still tracks hook-covered sessions (interactive Claude/Codex) and enqueues `session_end` after 10 minutes of quiet. Hooks keep owning start/turn events; the quiet `session_end` is the channel work-report trigger those sessions were missing. Resume (transcript mtime or a later hook event) resets the timer. A SessionEnd hook within 60s of that emit is not treated as resume, so `/exit` does not double-fire.
2152
+ - Reloading a macOS LaunchAgent (`hq mesh daemon install`, including `--if-stale` and the post-update restart, `hq daemon install`, `hq agent kit` services, and bot agents) now waits for `launchctl bootout` to finish before bootstrapping. Before, bootstrap could race the old job's teardown, fail with "Bootstrap failed: 5: Input/output error", and leave the service unloaded with nothing running. Bootstrap now polls `launchctl print` for up to 10 seconds, retries EIO with backoff (0.5s to 8s), and on final failure either restarts the still-loaded previous job or reports that the service is NOT loaded with the `launchctl bootstrap` command to fix it.
2153
+
2154
+ ## [5.177.0] — 2026-09-24
2155
+
2156
+ ### Added
2157
+
2158
+ - `hq lanes create --hire-grant`, `hq lanes grant`, and `hq lanes backfill-grants`
2159
+ manage alive child-lane grants. `lanes.hire-grants` defaults off; lane list and
2160
+ show include grant and alive-child counts. Terminal child resume, message, and
2161
+ account-move paths recheck occupancy and remaining grant allocation. The
2162
+ backfill defaults to dry-run.
2163
+ - When `lanes.hire-grants` is enabled, `hq lanes list` and `hq lanes show` use counts
2164
+ from the owning Outpost for active remote lanes. If the Outpost does not return
2165
+ counts, both commands show local counts and a warning.
2166
+
2167
+ ## [5.176.0] — 2026-09-24
2168
+
2169
+ ### Fixed
2170
+
2171
+ - `hq bot create setup` restores the account's existing setup bot when the local copy is missing.
2172
+
2173
+ ## [5.175.0] — 2026-09-24
2174
+
2175
+ ### Fixed
2176
+
2177
+ - `hq agent kit` now shows missing external credentials at a home-relative path and reports the missing enrollment as an actionable precondition.
2178
+ - Missing external agent credentials show an actionable error without creating a Sentry fault.
2179
+
2180
+ ## [5.174.0] — 2026-09-24
2181
+
2182
+ ### Fixed
2183
+
2184
+ - Outpost worktree pruning now tolerates cwd `EACCES` only for the verified
2185
+ same-user systemd `(sd-pam)` helper. Other same-user cwd failures and all fd
2186
+ scan failures remain fail-closed. This entry was listed under 5.173.0 by
2187
+ mistake: 5.173.0 was tagged before the change merged, so it first ships here.
2188
+
2189
+ ## [5.173.0] — 2026-09-24
2190
+
2191
+ ### Fixed
2192
+
2193
+ - `hq bot stop <name>` run from inside that bot's own turn now lets the turn finish: it signals the bot to drain (finish the running turn, post the reply, exit 0), which launchd leaves stopped. Before, it booted out the bot's own launchd job, which killed the bot, the turn, and the stop command itself (exit 137), so no reply was posted. `hq bot restart <name>` from inside the bot's own turn is refused with instructions, and `hq bot start` from inside the bot skips the agent reload.
2194
+ - Bot LaunchAgents and systemd units, the Work Mesh daemon unit, the `hq daemon` unit, and the lanes and agent-kit units now name node by its upgrade-stable path (`/opt/homebrew/bin/node` or `/opt/homebrew/opt/<formula>/bin/node`, or nvm's `current` link) instead of the versioned `/opt/homebrew/Cellar/node/<version>/bin/node`. Before, `brew upgrade node` deleted that path and launchd could no longer start the bots. The stable path is used only when it resolves to the same node binary; otherwise the unit keeps the resolved path as before.
2195
+ - Installed bot LaunchAgents that still name a versioned or missing node are repaired: `hq bot start` rewrites and reloads the agent, a bot started by launchd rewrites its own agent and reloads it from a detached shell before it takes any message, and `hq doctor` reports it (`bots.<name>.daemon-node`), with `hq doctor --fix` rewriting only the plist file and not reloading launchd. `hq bot list` and `hq bot status` flag a missing node binary. `hq mesh daemon install --if-stale` also reinstalls a same-version unit whose node path is missing or versioned.
2196
+
2197
+ ## [5.172.0] — 2026-09-24
2198
+
2199
+ ### Changed
2200
+
2201
+ - The `hq daemon` updater keeps hq-cloud current as well. Every 6 hours it
2202
+ installs the newest hq-cloud with the same major version into
2203
+ `~/.hq/daemon/hq-cloud`, and it restarts sync and the outpost heartbeat
2204
+ right after an update. The daemon runs sync, and the heartbeat when that
2205
+ hq-cloud has `hq-outpost-heartbeat`, from whichever copy is newer: this one
2206
+ or the one bundled with the CLI.
2207
+ - `hq daemon` sync pushes local changes as they happen (`--event-push`), the
2208
+ same as outpost sync does today.
2209
+
2210
+ ## [5.171.0] — 2026-09-24
2211
+
2212
+ ### Fixed
2213
+
2214
+ - Local bots (`hq bot run`) now restart onto an updated hq-cli install. A
2215
+ running bot checks the installed package behind its launch path every
2216
+ minute. When a complete, valid, different version is seen on two checks in a
2217
+ row, it stops taking new inbox items, lets running turns finish (queued items
2218
+ stay un-acked for the next process), logs
2219
+ `hq-cli updated <old> -> <new>; restarting to load it`, and exits 75 so
2220
+ launchd, systemd, or `hq daemon` starts it again. A bot with no supervisor
2221
+ starts its own replacement first. The new process logs its version at
2222
+ startup and whether the update converged. A restart that comes back on the
2223
+ old version blocks that target for 6 hours, and update restarts are capped
2224
+ at 4 per hour. `hq bot status` shows the hq-cli version a bot is running.
2225
+ Set `HQ_BOT_NO_CLI_UPDATE_RESTART=1` to turn this off.
2226
+
2227
+ ## [5.170.0] — 2026-09-24
2228
+
2229
+ ### Fixed
2230
+
2231
+ - Switching the HQ session company (including `hq-session.sh set company_slug`) clears the Work Mesh project and task, posts `session_end` to the previous company, and holds a personal target as `needs_company`.
2232
+
2233
+ ## [5.169.0] — 2026-09-24
2234
+
2235
+ ### Fixed
2236
+
2237
+ - `hq lanes create` and `hq lanes story <add|start|block|done>` keep story work
2238
+ local when an existing Work Mesh Board rejects a missing story. The
2239
+ `story_warning` identifies the project and story and suggests:
2240
+ `hq mesh project ensure <projectId> --company <slug> --stories-file prd.json`.
2241
+
2242
+ ## [5.168.0] — 2026-09-24
2243
+
2244
+ ### Fixed
2245
+
2246
+ - `hq mesh project set --stories-file` keeps live Board story status and
2247
+
2248
+ - `hq mesh` ignores nonpositive, malformed, and expired `Retry-After` hints.
2249
+
2250
+ ### Added
2251
+
2252
+ - `hq daemon` keeps the hq CLI, Claude, Codex and Grok up to date on every machine type, desktops included, every six hours. It updates the login user's own copy of each tool through that tool's npm package or its own `update` command, and leaves a copy the user cannot write (for example one root installed in /usr) alone. On outposts the daemon also runs Codex remote control (the box's Codex runner) next to Claude remote control, keeps the session name the box's runner used, and restarts either one onto a newly installed Claude or Codex once the session has been quiet for 10 minutes, or after 2 hours at the latest. `hq daemon install` never sets the daemon up to run as root: a box runs it as the login user from `/etc/hq/machine-type`, the outpost runner unit, `--user` or `sudo`, and an outpost without the marker file is recognised from its runner unit. `hq daemon migrate --apply` also takes over the outpost runner watchdogs and the Codex update timer.
2253
+ - Added outpost worktree cleanup commands for dry runs and pruning clean, aged
2254
+ worktrees. Lane, session, and process references keep their worktrees. Pressure
2255
+ and daily timers use the `outpost.worktree-pruner` hq-flags key, which starts off.
2256
+ Live-lane `worker.out` files and matching Claude session transcripts are read in
2257
+ bounded chunks. Transcript lookup reads only the file matching the lane's
2258
+ provider session ID under `.claude*/projects/*`. An unresolved lane keeps
2259
+ worktrees whose root, linked Git index, or linked Git `HEAD` changed at or after
2260
+ its `created_at`; a missing or invalid start time keeps every candidate. A
2261
+ never-spawned queued lane without a provider session does not hold a worktree.
2262
+
2263
+ ## [5.167.0] — 2026-09-24
2264
+
2265
+ ### Fixed
2266
+
2267
+ - `hq lanes stop` sends Outpost-hosted stops to the owning host and updates the
2268
+ local record after confirmation. If the Outpost already finished the lane,
2269
+ the CLI syncs its terminal state.
2270
+ - Story updates, reparenting, admission, question creation, and active answer
2271
+ delivery return `lane_remote` when another host owns the lane. Message, resume,
2272
+ and move keep their Outpost dispatch paths.
2273
+
2274
+ ## [5.166.0] — 2026-09-24
2275
+
2276
+ ### Changed
2277
+
2278
+ - The setup bot can explain what HQ is: the shared context layer for a whole
2279
+ team, their coding tools (Claude Code, Codex, Cursor) and every bot. It no
2280
+ longer repeats the finish card in replies after setup ends.
2281
+
2282
+ ## [5.165.0] — 2026-09-24
2283
+
2284
+ ### Fixed
2285
+
2286
+ - Codex lane starts and resumes now pass the assigned worker policy directory to
2287
+ policy hooks.
2288
+
2289
+ ## [5.164.0] — 2026-09-24
2290
+
2291
+ ### Fixed
2292
+
2293
+ - When a startup import fails, hq-cli checks for an update lock, a retired package
2294
+ directory, or install-tree changes for 1.5 seconds. If none appears, it exits
2295
+ with `npm install -g @indigoai-us/hq-cli@latest` instead of waiting 90 seconds.
2296
+ Sentry context replaces the home-directory prefix with `~`.
2297
+ - Sentry keeps the `guarded`, `unsettled`, `reexec-failed`, and `lock-held`
2298
+ outcomes, adds `stale_tree` and `tree_state`, and tags `updater_source` when
2299
+ known. The fingerprint remains `["InstallTreeTornError", "outcome:<token>"]`,
2300
+ so the four existing outcome groups keep their keys.
2301
+
2302
+ ## [5.163.0] — 2026-09-24
2303
+
2304
+ - Workforce plan refusals in the CLI keep direct checkout for eligible companies.
2305
+ The server upgrade URL stays visible; personal refusals and checkout failures can
2306
+ open it. Non-TTY and JSON runs print only the URL and exit non-zero.
2307
+
2308
+ - `hq mesh` sends at most 25 replayed events for a session in one flush. It honors `Retry-After` on 429 and 503 responses and stops waiting when the daemon shuts down.
2309
+
2310
+ ### Added
2311
+
2312
+ - `hq daemon` now also runs the `updater` (hq CLI and Codex updates every six hours, then restarts the daemon onto the new version), `remote-control` (`claude remote-control` in a private tmux session on outposts) and `jobs-reconcile` (the outpost jobs reconcile script every ten minutes). `hq bot`, `hq mesh daemon install` and `hq lanes reconcile install` hand their service to the daemon when it is installed instead of adding their own background unit. `hq daemon migrate --apply` stops the older HQ background units and moves their definitions aside so the daemon runs those services, and `hq daemon uninstall --restore-legacy` puts them back; The desktop app's own sync agent is never taken over.
2313
+ - `hq daemon` runs all of a machine's HQ background services under one supervisor. `hq daemon install` works out whether the machine is a desktop, self-hosted server, outpost, agent box or agent kit, installs one background service, and starts that machine type's default services (sync, mesh, heartbeat, bots, lanes cleanup, search indexing and log rotation, depending on the type). `hq daemon enable|disable <service>` changes the list for one machine. `status`, `logs`, `restart` and `trigger` manage the running services. A service that an older background unit already runs is left to that unit, and `hq daemon migrate` only lists what it would take over. The command is hidden from `hq --help` while it rolls out. It needs no feature flag.
2314
+
2315
+ ## [5.162.0] — 2026-09-24
2316
+
2317
+ ### Fixed
2318
+
2319
+ - An invalid envelope that remains after its repair turn no longer leaves a
2320
+ lane inaccessible. Operators can resume or message a failed lane with a
2321
+ recorded provider session, and the next envelope slot gets one new repair
2322
+ attempt with the validation errors in the prompt.
2323
+
2324
+ ## [5.161.0] — 2026-09-24
2325
+
2326
+ ### Fixed
2327
+
2328
+ - No-reader flag gates now honor only `true` and `false` in `HQ_FLAG_<KEY>`
2329
+ overrides when the registry endpoint is unset or its reader is unavailable.
2330
+
2331
+ ## [5.160.0] — 2026-09-24
2332
+
2333
+ ### Added
2334
+
2335
+ - Worker profiles can deliver validated policy files through an installed HQ
2336
+ hook or include them in the prompt when the hook is unavailable. Resume and
2337
+ message can attach a profile, and resume can attach a mesh company. Bot-owned
2338
+ Claude profiles may rely on provider configuration for optional model,
2339
+ account, effort, and fast-mode values.
2340
+
2341
+ - Added `hq agents login-code`, which submits a Claude subscription code from
2342
+ an argument or stdin. Provisioning help shows the Agents v2 command and
2343
+ account requirement. Claude subscription creates print the console URL and
2344
+ login-code command.
2345
+
2346
+ ### Fixed
2347
+
2348
+ - If a Codex or Claude worker exits without writing this run's envelope, hq lanes
2349
+ gives its session one resume turn to write the expected file. The watcher and
2350
+ dead-host recovery ignore earlier envelopes. If the repair still writes no
2351
+ valid envelope, the lane remains interrupted.
2352
+
2353
+ ## [5.159.0] — 2026-09-24
2354
+
2355
+ ### Fixed
2356
+
2357
+ - Hook timeout reports now identify the slow child hook and group concurrent
2358
+ session-wide slowness together. Update checks have bounded network calls, and
2359
+ the core-write guard avoids repeated subprocess work.
2360
+ - Machine-wide hook warnings and exceeded timeouts now keep separate Sentry
2361
+ groups, and per-script rate limits no longer suppress a later machine-wide
2362
+ report from the same session.
2363
+
2364
+ ## [5.158.0] — 2026-09-24
2365
+
2366
+ ### Added
2367
+
2368
+ - `hq lanes create --placement auto` selects a host with room for the provider and account. Managers can set `--default-placement` for their workers, `hq lanes list` shows capacity by host while `lanes.outpost-load-balancing` is enabled, and `hq lanes move` can relocate a queued lane that has not started. Remote worker profiles must match the creator's content hash.
2369
+ - `hq lanes outpost-identity backfill --id <id>` fills a missing Outpost marker without replacing another value. New Outposts write their id to `/etc/outpost/outpost-id` so lane commands can identify the host.
2370
+
2371
+ ## [5.157.0] — 2026-09-24
2372
+
2373
+ ### Fixed
2374
+
2375
+ - Local bots (`hq bot run`) now receive HQ chat attachments. The runner reads
2376
+ `attachments` on each inbox item, downloads every file with the bot's own
2377
+ machine identity through the same checks `hq_attachment_fetch` uses (chat
2378
+ attachment path only, DM must include the bot, company must be one of the
2379
+ bot's own, 26 MiB cap), and saves it under `~/.hq/bots/<name>/attachments/`
2380
+ (dir 0700, files 0600). The turn text lists each file's name, type, size and
2381
+ local path, with small text files inlined; a file that could not be fetched
2382
+ gets a one-line reason, which is also logged. A message that is only an
2383
+ attachment is answered instead of being acked and dropped. Claude turns get
2384
+ `--add-dir` for the attachments folder so gated permission modes can read it.
2385
+ The MIME type is also read from the server's `kind` field.
2386
+
2387
+ ## [5.156.0] — 2026-09-24
2388
+
2389
+ ### Fixed
2390
+
2391
+ - Project-thread lookup treats an omitted server `kind` as the project thread,
2392
+ preventing duplicate project threads when a newer lane thread is present.
2393
+ - Lane admission reservations are refreshed after Work Mesh lane-thread
2394
+ registration so slow registration cannot age the reservation before spawn.
2395
+
2396
+ ### Added
2397
+
2398
+ - `hq mesh project register --channel` and `project set --channel` can bind an
2399
+ existing channel to project events. `hq mesh check --project` shows lane
2400
+ identity and status, including terminal lane threads.
2401
+ - Lane mesh threads keep a stable lane id across resume and account moves.
2402
+ Events include the worker profile, model, account, parent lane, and senior
2403
+ owner. Stop and dead-host recovery events close terminal threads.
2404
+
2405
+ ### Tests
2406
+
2407
+ - Cover server-shaped project-thread results and reservation timing after
2408
+ lane-thread registration.
2409
+
2410
+ ## [5.155.0] — 2026-09-24
2411
+
2412
+ ### Fixed
2413
+
2414
+ - Lane respawns keep their recorded account to preserve provider sessions and
2415
+ prompt caches. Automatic moves now record why they happened and are limited
2416
+ to model changes, usage limits, and unavailable or logged-out accounts.
2417
+ - Account retries share the provider admission lock and the host-scoped provider,
2418
+ account, and profile checks used by normal admission. Active reservations and
2419
+ earlier eligible queue entries keep their place; blocked retries remain queued
2420
+ for normal admission. Retries skip accounts already rejected for login and
2421
+ retain message, resume, and answer context when queued.
2422
+ - Watcher retries resolve the current process hostname and Outpost identity, so
2423
+ local-kind and Outpost-kind lanes on one Outpost share admission caps.
2424
+ - Account enable and registration now require a positive login check. Provider
2425
+ startup messages for logged-out accounts trigger failover to another eligible
2426
+ account or a named `account_not_logged_in` failure.
2427
+
2428
+ ### Added
2429
+
2430
+ - Provider config can list accounts in preference order for a lane's first
2431
+ assignment. Disabled, logged-out, usage-limited, and capped accounts are
2432
+ skipped. If no preferred account is eligible, hq-cli chooses the least-loaded
2433
+ eligible account. Running and resumed lanes keep their recorded account.
2434
+
2435
+ ## [5.154.0] — 2026-09-24
2436
+
2437
+ ### Fixed
2438
+
2439
+ - Local bots can now open files attached in HQ chat. The new `hq_attachment_fetch` agent tool downloads a chat or DM attachment into a private folder under the bot's agent directory and returns its local path, content type, and size (text files also come back inline). It accepts only the scope-relative `chat/attachments/...` paths that `hq_inbox_read` reports, fetches only from the bot's own company or from a DM the bot is part of, refuses files over 26 MiB, and uses the API the bot enrolled against. Because the attachment reference comes from the sender, any other vault path (for example `knowledge/...`, or a folder) is refused and the bot is pointed at `hq_files_read`. Previously `hq_files_read` rejected those paths and could not read binary files such as .xlsx.
2440
+
2441
+ ## [5.153.0] — 2026-09-23
2442
+
2443
+ ### Fixed
2444
+
2445
+ - `hq mesh context prd-sync` rebinds a session to the PRD's project when that project is in the same company, then emits `task_status` against the new project so the Board and channel line land there. A PRD in another company is still skipped and does not rebind.
2446
+
2447
+ ### Tests
2448
+
2449
+ - Cover Outpost admission when account a is at its Codex cap and account b
2450
+ has queued work with available capacity.
2451
+ - Cover fresh pending resumes and answered-lane resumes against provider
2452
+ capacity.
2453
+
2454
+ ## [5.152.1] — 2026-09-23
2455
+
2456
+ ### Fixed
2457
+
2458
+ - Windows bot runtimes resolve provider binaries through PATH and PATHEXT, safely launch npm .cmd and .bat shims, pass multiline and long prompts through stdin or Grok ACP, and stop the full process tree.
2459
+
2460
+ ## [5.152.0] — 2026-09-23
2461
+
2462
+ ### Fixed
2463
+
2464
+ - `hq mesh daemon install` (plain and `--if-stale`) now bootouts, bootstraps, and kickstarts the LaunchAgent after writing the plist. Bootstrap retries launchd `5: Input/output error` up to five times, one second apart. After a CLI upgrade, a loaded job whose program no longer matches the plist is reloaded the same way.
2465
+
2466
+ ## [5.151.0] — 2026-09-23
2467
+
2468
+ - `hq report publish` no longer fails when another app it cannot see holds the report's address. It publishes at the next free address (`<slug>-2`, then `-3`) and saves that address on the report.
2469
+
2470
+ ## [5.150.0] — 2026-09-23
2471
+
2472
+ ### Fixed
2473
+
2474
+ - `hq lanes` now admits queued lanes by priority, then queue age, as provider, account, profile, or throttle capacity opens. Auto-balanced lanes can move to another eligible account when that account frees first. Create, message, resume, and pickup use the same admission checks. `hq lanes admit <lane-id>` reports the blocker, and authorized `--force` records `operator_force`. Reconcile refreshes queued reasons, and Outpost-hosted queued lanes appear as remote.
2475
+
2476
+ ## [5.149.1] — 2026-09-23
2477
+
2478
+ ### Fixed
2479
+
2480
+ - The package now ships `scripts/mesh-daemon-if-stale.mjs`, which its postinstall step runs; a failure in that step never fails the install.
2481
+
2482
+ ### Added
2483
+
2484
+ - Lanes can carry several project stories with a warning for parallel active
2485
+ work. Story commands now add, start, block, list, and complete carried work.
2486
+ - Mesh lifecycle events include the story id, and board status moves through
2487
+ `in_progress`, `blocked`, `review`, and senior-verified `done`. Missing
2488
+ project views are repaired before a status patch is retried.
2489
+
2490
+ ### Fixed
2491
+
2492
+ - `hq mesh context prd-sync` adds missing Board stories before it emits, and
2493
+ records a snapshot only for stories the server accepted or left unassigned.
2494
+ A rejected story stays changed so the next `prd.json` write sends it again.
2495
+ - The checkpoint Stop gate now accepts any non-whitespace reply by default.
2496
+ `HQ_CHECKPOINT_REPLY_MIN` can still require a longer reply or disable the check.
2497
+ - `hq lanes message` and text resumes now reach the lane's Outpost through the existing exec transport and report failure when delivery is not confirmed. Resumes keep the last known provider session id and recover its transcript from registered account homes before spawning.
2498
+
2499
+ ## [5.148.0] — 2026-09-23
2500
+
2501
+ ## [5.147.0] — 2026-09-23
2502
+
2503
+ ### Fixed
2504
+
2505
+ - Reinstalling an MCP server now updates its definition when the existing
2506
+ Claude or Codex entry belongs to the same HQ pack. Unmarked and other-pack
2507
+ entries still refuse replacement.
2508
+ - `hq mesh context prd-sync` now moves the Board. Its task_status events carry the session's company and project, and take sequence numbers from the session's shared counter (the same file the hooks use), so the server no longer rejects them as duplicates. Rejections print their codes.
2509
+ - The mesh daemon no longer treats a missing company slug, a membership timeout, or a lookup error as proof that the device owner is not a member. A device-default session that was cleared to `needs_company` is checked once against the configured default company and, when that membership is active, the company is put back and held events flush. The same cleared session is not counted as a new denial on every later flush.
2510
+ - `hq mesh daemon install` records the absolute path of the CLI that ran it (realpath of `process.argv[1]`) and the absolute node binary. It does not look up `hq` on `PATH`. The daemon logs `daemon version=<x> entry=<path>` at start and stores both in `daemon/state.json`. `hq mesh doctor` and `hq mesh daemon doctor` say when that record does not match this CLI and name `hq mesh daemon install` as the fix, and they list every `hq` on `PATH`. `hq mesh daemon install --if-stale` reinstalls and restarts only when this CLI is newer. The package postinstall runs that flag.
2511
+ - `hq mesh project ensure` no longer fails when the server refuses to close the extra genesis thread; it leaves that thread open and prints one line. Registration and the calling session's binding complete.
2512
+ - The mesh daemon re-checks a `needs_project` or unresolved session when it flushes that session's events. If the project Board is now an exact or clear catalog match, the batch is posted with that project and the session file is bound. A tie or near miss stays `needs_project`. The check runs at most once a minute per session.
2513
+
2514
+ ## [5.146.0] — 2026-09-23
2515
+
2516
+ ### Fixed
2517
+
2518
+ - The mesh daemon asks for presence in the device-default company and the companies with a session updated in the last day (at most five), and asks again within a minute when that set changes. `hq mesh doctor` says when a company was left out because presence is off or because one credential cannot cover every company.
2519
+ - `hq mesh project ensure` closes a genesis thread only when that same call created it and register returns a different server `proj-` thread. An already-open project thread stays open on a re-run. The register route does not accept a client thread id.
2520
+ - `hq mesh project ensure` on a new project closes the client genesis thread when register returns the server `proj-` thread, so the project has one open thread. The register route does not accept a client thread id.
2521
+ - A session that registers or creates a project is bound to it. `hq mesh project ensure` and `hq mesh project set --create` bind the calling session when it is the same company and still `needs_project` or unresolved, and they leave a session that is already on a different project alone. The next prompt re-checks `needs_project` against the current catalog. `hq mesh context prd-sync --session <sid> --file <prd.json>` emits `task_status` when a bound session's story `passes` or `status` changes (`passes: true` is done, `in_progress` is in progress) and does not call the network when nothing changed.
2522
+ - `hq report publish` now fills a report's missing company from its channel and keeps it across updates. Before, a report saved without a company was published under a personal access policy and the deploy refused it.
2523
+
2524
+ ## [5.145.0] — 2026-09-23
2525
+
2526
+ - `hq files` now preserves a trailing-slash private-folder pattern such as
2527
+ `foo/` rather than rewriting it to `foo/*`, identifies private folders in
2528
+ ACL and discovery output, and explains the conflict with an existing shared
2529
+ glob. Quote a shared glob such as `'foo/*'` when invoking it from a shell.
2530
+ - `hq report` now finds reports on project channels. It listed only personal channels and treated only company-wide channels as valid, so every publish from a bot on a project channel failed with a generic deploy error. Channel lookup errors now say what went wrong.
2531
+
2532
+ ## [5.144.0] — 2026-09-23
2533
+
2534
+ - Worker-profile models now use the same provider catalog validation as
2535
+ `--model` during creation and before every later provider launch. The error
2536
+ names the profile when its model is unsupported.
2537
+ - Worker resolution continues to use the existing personal, core, installed
2538
+ package, and company worker sources. hq-cli does not ship starter profiles.
2539
+
2540
+ ## [5.143.0] — 2026-09-23
2541
+
2542
+ ### Fixed
2543
+
2544
+ - `hq dm` and report commands now reject non-recipient and non-company channel
2545
+ requests locally, and report updates retry one fresh revision after a
2546
+ conflict.
2547
+ - `hq mesh project register` now verifies the company's Board view before
2548
+ registering and reports an actionable local error when the Board is missing.
2549
+
2550
+ ## [5.142.0] — 2026-09-23
2551
+
2552
+ ### Added
2553
+
2554
+ - Added reusable personal worker profiles for `hq lanes create --worker`, with
2555
+ strict `meta.yaml` validation, content hashes, profile-default precedence,
2556
+ provider-specific prompt/settings carriers, and reapplication on every fresh,
2557
+ resumed, moved, repaired, and compaction spawn.
2558
+ - Personal lanes can now use explicit `--mesh-company` attribution so their
2559
+ project thread, presence, and lifecycle events appear in Work Mesh after
2560
+ membership validation.
2561
+
2562
+ ### Fixed
2563
+
2564
+ - Account login now reuses a registered account home when `--home` is omitted.
2565
+ Codex account login also accepts `--device-auth` for remote boxes without a
2566
+ localhost browser callback.
2567
+ - Checkpoint Stop-gate reply detection now uses the Stop payload when the
2568
+ transcript has not flushed yet, and fails open with an ambiguity log when
2569
+ neither reply source is reliable.
2570
+
2571
+ ## [5.141.0] — 2026-09-23
2572
+
2573
+ - `hq bot jobs` now checks the bot's configured agent ID against the machine credential before calling the jobs API. A mismatch reports both IDs and explains how to fix the bot configuration or re-mint its credentials.
2574
+
2575
+ ## [5.140.0] — 2026-09-23
2576
+
2577
+ ### Fixed
2578
+
2579
+ - `hq lanes monitor-check` now recognizes a live Claude Monitor task launched through the CLI's shell/node process wrapper, so active lanes are not reported as uncovered.
2580
+
2581
+ - A session hint now binds to the best existing project. An exact Board is used as-is. An exact local PRD gets a Board through the same genesis-thread, view, then register path as `project ensure`, and is bound. A single clear match is bound with a recorded reason. When nothing matches, or two candidates are close, the session stays `needs_project` and the start hook lists the candidates. `hq mesh context bind-project` applies the answer. A flush HTTP 404 downgrades that session, holds its events, and logs one line instead of dead-lettering them. `hq mesh doctor` lists `needs_project` sessions.
2582
+
2583
+ ## [5.139.0] — 2026-09-23
2584
+
2585
+ ### Added
2586
+
2587
+ - `hq mesh project ensure <projectId> --company <slug> --stories-file prd.json` registers a missing Board view, merges an existing one without replacing live story status or assignee, then checks the company, project id, story ids, and repo paths. `hq mesh project set --create` writes a view when the GET is a 404.
2588
+
2589
+ ### Fixed
2590
+
2591
+ - `hq report` now resolves report ids through local channel context and channel report lists instead of probing every channel with a report GET that can produce avoidable 404s.
2592
+
2593
+ ## [5.138.0] — 2026-09-23
2594
+
2595
+ ### Fixed
2596
+
2597
+ - `hq dm accept`, `decline`, and `block` now resolve pending requests to the
2598
+ server's `personUid` field instead of sending unsupported action body fields.
2599
+
2600
+ ## [5.137.0] — 2026-09-23
2601
+ ### Added
2602
+
2603
+ - Added `hq channels members <channel>` to print channel members for human and machine-principal sessions, with a `--json` format for scripts.
2604
+
2605
+ ## [5.136.0] — 2026-09-23
2606
+
2607
+ ### Added
2608
+
2609
+ - Your local bots can now do work on a repeating schedule. Ask a company bot for something regular — "check the overnight errors every weekday morning" — and it sets the schedule up itself; you can also see and remove its schedules with `hq bot jobs <name>`. The schedule is kept in the cloud, not on your computer. If the Mac is asleep when a run is due, the run happens as a catch-up when it wakes, as long as that is within about an hour, and the bot's report says it ran late; after a longer outage that run is skipped and the job carries on at its next scheduled time. Personal bots can't schedule work yet.
2610
+
2611
+ ## [5.135.0] — 2026-09-23
2612
+
2613
+ ### Added
2614
+
2615
+ - Claude lanes now set Claude Code's `CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`
2616
+ control on fresh launches and session resumes.
2617
+ `providers.claude.auto_compact_tokens` sets a positive-integer override, and
2618
+ Codex and Grok launch environments are unchanged.
2619
+
2620
+ - Added `hq lanes watch` for bounded state and question polling, plus
2621
+ `hq lanes monitor-check` for Claude Monitor coverage with distinct exit codes
2622
+ for uncovered lanes and unreadable evidence. The reminder text is available
2623
+ from `hq lanes monitor-check --reminder`.
2624
+ - Corrected watch JSONL output and question status transitions, bounded Monitor
2625
+ recommendations to the watch limit, and made stale or unreadable Monitor
2626
+ evidence fail closed.
2627
+
2628
+ - Lanes can opt selected Codex model ids into fast mode with
2629
+ `providers.codex.fast_mode_models`. Matching fresh and resumed runs pass
2630
+ Codex's `service_tier="fast"` and `fast_mode` settings and record the
2631
+ decision in the lane record and `spawn.json`.
2632
+
2633
+ ## [5.134.0] — 2026-09-22
2634
+
2635
+ ### Fixed
2636
+
2637
+ - Agent-kit and local-bot heartbeat loops now stop after the server reports an
2638
+ agent identity mismatch instead of retrying indefinitely. `hq doctor` shows
2639
+ the configured and token agent IDs for the mismatch.
2640
+
2641
+ ## [5.133.0] — 2026-09-22
2642
+
2643
+ ### Fixed
2644
+
2645
+ - Lane follow-ups now probe all enabled, logged-in accounts for an unpinned
2646
+ model, preserve the later quota reset and its source, expire abandoned pickup
2647
+ validation markers with a terminal reason, and parse Codex's ordinal
2648
+ `try again at` reset time.
2649
+
2650
+ - `hq sync push` no longer fails every file when the target vault was
2651
+ provisioned on or after 2026-09-19. Those vaults carry an S3 Object Lock
2652
+ default retention rule, and S3 refuses a PutObject into them unless the
2653
+ request carries a content checksum; the CLI's declared `@indigoai-us/hq-cloud`
2654
+ range still allowed a client that sends none, so an affected push reported
2655
+ `400 InvalidRequest: Content-MD5 OR x-amz-checksum- HTTP header is required
2656
+ for Put Object requests with Object Lock parameters` on every file. The
2657
+ dependency floor now starts at the release that attaches the checksum, so no
2658
+ install can resolve a client that cannot write to a locked vault. A CI guard
2659
+ holds the floor.
2660
+
2661
+ - Lane creation and re-parenting now allow depth 3. A depth-3 caller and any
2662
+ derived depth 4 lane are refused with `max_lane_depth`.
2663
+
2664
+ - Question ageing now derives its two-advance cap from the depth-3 lane cap, so
2665
+ an unanswered worker-lane question reaches the user after two hourly hops.
2666
+
2667
+ ## [5.132.0] — 2026-09-22
2668
+
2669
+ ### Added
2670
+
2671
+ - `hq lanes resume <lane-id> --account <id>` and `hq lanes message <lane-id>
2672
+ --account <id>` move a lane's provider session to another account of the
2673
+ same provider and continue it there, with its full history. The claude
2674
+ transcript (`projects/<encoded cwd>/<session>.jsonl`, plus the session's
2675
+ subagent directory) or the codex rollout
2676
+ (`sessions/YYYY/MM/DD/rollout-*-<session>.jsonl`) is copied into the target
2677
+ account's home; the source copy stays, and a copy the target already holds
2678
+ is refreshed when it differs, so a lane moved back resumes the turns it ran
2679
+ elsewhere. Every check runs before anything is copied or written: the lane must not be running (`lane_running`), the
2680
+ target must be an account of the lane's provider
2681
+ (`account_provider_mismatch`), exist, be enabled, be logged in, hold no
2682
+ quota hold (`account_quota_held`), and know the lane's model; a target that
2683
+ pins a different model needs `--model <id>` (new on both commands, accepted
2684
+ only with `--account`). Grok lanes are refused with
2685
+ `provider_session_not_portable`; a missing transcript or rollout with
2686
+ `provider_session_missing`, naming the path searched. The record's
2687
+ `account` moves, `account_history` gains an `operator_move` entry,
2688
+ `last_resume.account` names the account the run started on, and
2689
+ `hq lanes show` prints them; a record that changed after the move was
2690
+ prepared is refused with `account_move_conflict`. The capacity decision
2691
+ runs under the target account's admission lock, and a moved lane holds its
2692
+ slot (`pending_resume`) until its spawn claims it, so two moves cannot share
2693
+ one free slot. A target at its running cap queues the lane there with
2694
+ `pending_resume`, and the reconcile pass resumes the session on the target,
2695
+ honouring `--no-compact`. Mesh events for a moved lane carry `account` and
2696
+ `account_move`. Credential files are never copied.
2697
+
2698
+ - A provider-level turn failure is a named lane failure. When the worker's
2699
+ stdout carries a codex `turn.failed` event, a Claude error result with an
2700
+ HTTP status, or a grok error object, the watcher classifies the lane
2701
+ `failed` with `terminal_reason: provider_rejected` and writes the
2702
+ provider's message (capped), status, error class, `retryable`, and the
2703
+ model and account the run used to `terminal_details`. Such an exit is never
2704
+ `interrupted` and never spawns the envelope repair turn. A 429 stays on the
2705
+ quota path. `hq lanes show` prints `terminal_reason` and
2706
+ `terminal_details`.
2707
+ - `hq lanes create --model` is validated against the provider's own model
2708
+ list before anything is written: codex from the account home's
2709
+ `models_cache.json`, grok from `grok models`, claude from the aliases and
2710
+ full-name prefix in `claude --help`. An unknown id is refused with
2711
+ `model_unsupported` naming the provider, the value, the source and the
2712
+ accepted ids. A provider whose list cannot be read (missing, corrupt, or
2713
+ unreadable cache; failed probe) is not validated. Validation runs before
2714
+ the mesh thread is ensured and before the admission lock is taken, so a
2715
+ refusal leaves nothing behind and a slow provider probe never holds the
2716
+ lock. An unpinned create reads the list of every enabled account the
2717
+ balanced choice could land on before the lock; the account is still chosen
2718
+ under the lock, restricted to the accounts whose list accepted the model,
2719
+ so nothing is refused once the mesh thread exists and no probe or catalog
2720
+ read runs while the lock is held. A `grok models` or `claude --help` probe that exits nonzero
2721
+ is not a catalog, whatever it printed, and skips validation. Every outpost
2722
+ lane is validated at pickup on the executing host, after its account
2723
+ binds, and fails with `model_unsupported` there; a lane cancelled during
2724
+ the pickup probe stays cancelled and is not spawned. A picked-up lane is
2725
+ stored ineligible for admission (`pickup_validation_pending`) until its
2726
+ account binds, so the reconcile pass cannot spawn it while the probe is
2727
+ out, and the failure write refuses an already-terminal or running record
2728
+ inside its compare-and-swap.
2729
+ - A codex `turn.failed` or grok error with status 429, or with no status and
2730
+ a usage-limit or rate-limit message, now reaches the quota path (reset time
2731
+ and account hold recorded) instead of ending `interrupted`, and skips the
2732
+ envelope repair turn so the hold applies at once; an explicit non-429
2733
+ status wins over quota-sounding text. The reconcile pass applies the same
2734
+ routing when it recovers a lane whose worker and watcher both died. The
2735
+ provider's output is scanned from the tail one line at a time, so a long
2736
+ run's events are never all parsed and held at once. A 429 whose message
2737
+ names no reset time holds the account for the provider's
2738
+ `quota_default_hold_ms` (fifteen minutes unless configured), recorded with
2739
+ `reset_source: default_hold`; a message with a reset time keeps that time.
2740
+
2741
+ ### Fixed
2742
+
2743
+ - `hq lanes reconcile install` no longer copies the installing shell's PATH
2744
+ into the systemd unit. The unit PATH is, per resolved provider, the
2745
+ directory holding the command name and the real binary's directory when a
2746
+ symlink points elsewhere, then the hq binary's directory, then the node
2747
+ binary's directory, then `/usr/local/bin:/usr/bin:/bin`, deduplicated; directories synced from
2748
+ another machine's profile are left out.
2749
+
2750
+ ## [5.131.0] — 2026-09-22
2751
+
2752
+ ### Added
2753
+
2754
+ - `hq files share` can post the share record to a project channel instead of a
2755
+ DM: `--channel <name>` names the channel and `--mention <person>` (repeatable)
2756
+ tags people in it. Using `--mention` without `--channel` is an error. If you
2757
+ or a mentioned person are not members of that channel, access is still
2758
+ granted and the record falls back to a DM, with a short note on the CLI.
2759
+ - Offline preflight results the CLI can emit are published at
2760
+ `contracts/preflight/v1/schema.json` and `fixtures.json` (included in the
2761
+ package). `hq mesh contract preflight --print-fixtures` prints the same
2762
+ document. A test fails if the committed fixtures drift from the emitter.
2763
+ contractVersion stays pinned at 1 until hq-core's vendored copy moves with it.
2764
+
2765
+ ### Fixed
2766
+
2767
+ ## [Unreleased]
2768
+
2769
+ ### Fixed
2770
+
2771
+ - `hq mesh daemon install` and `hq mesh daemon run` unload and remove the
2772
+ legacy `ai.getindigo.hq-work-mesh-listen` unit (LaunchAgent, systemd user
2773
+ unit, or Scheduled Task) so only the daemon subscribes. The daemon writes
2774
+ `~/.hq/work-mesh/live-cache.json` and bumps its cursor once per project-view
2775
+ push. MQTT reconnect logs once per transition into reconnecting instead of
2776
+ on every close. `hq mesh daemon doctor` reports "legacy listener still
2777
+ installed" while that unit remains (US-006).
2778
+
2779
+ ## [Unreleased]
2780
+
2781
+ - Held-event repair no longer treats a later event timestamp as proof that
2782
+ metadata belongs to the current session instance. A reused session id stays
2783
+ unresolved when the held event's binding episode does not match the current
2784
+ one. A CLI self-update now records the verified HQ root and rewrites a
2785
+ legacy daemon unit (no `HQ_ROOT`, or `Restart=on-failure`) before restarting
2786
+ it, so the new process does not come up with an empty root allowlist.
2787
+
2788
+ ## [Unreleased]
2789
+
2790
+ - A machine credential (fleet box or local bot) no longer posts mesh events
2791
+ with no company. `HQ_SPAWN_COMPANY`, the bot's company, or the identity
2792
+ file is sent with the event. When none of those is set, the event is held
2793
+ as `needs_company` and `hq mesh daemon doctor` shows the held count.
2794
+ A membership probe that a machine token cannot answer leaves the company
2795
+ in place and retries, instead of clearing it.
2796
+
2797
+ ## [Unreleased]
2798
+
2799
+ - Expected caller errors from company resolution, membership, and qmd lookups
2800
+ no longer create Sentry issues. Windows filesystem failures remain visible
2801
+ and now include redacted path context plus a sync-aware diagnostic.
2802
+
2803
+ - An acknowledged Work Mesh register keeps the company on the session even
2804
+ when there is no project, or a project and no task. The next flush posts a
2805
+ held event for that session instead of leaving it held for lack of a company.
2806
+ Tests cover each acked-register branch.
2807
+
2808
+ - `hq mesh project set` sends the project version it just read (`If-Match` and
2809
+ `expectedVersion`). A 409 prints "The Board changed while you were editing.
2810
+ Re-run to pick up the latest." and exits non-zero. `--json` includes
2811
+ `VERSION_CONFLICT`.
2812
+
2813
+ - `hq mesh session` prints each rejected event's server code (and `--json`
2814
+ includes `rejections`). A flush dead-letter row for a per-event rejection
2815
+ stores that code next to `reason`.
2816
+
2817
+ - A Cognito refresh that comes back for a different subject is refused and the
2818
+ active `cognito-tokens.json` is left unchanged. `hq mesh daemon doctor`
2819
+ prints the whoami subject and the subject the daemon is using.
2820
+
2821
+ ### Changed
2822
+
2823
+ - Local bots can reply to other people and bots in direct messages and in
2824
+ connected rooms without an owner-only sender restriction. Each DM
2825
+ correspondent has a separate conversation, and the owner's private context
2826
+ stays out of other people's conversations. Bots retain their configured
2827
+ owner and check suspicious requests before taking sensitive actions.
2828
+
2829
+ ## [5.130.0] — 2026-09-22
2830
+
2831
+ ### Fixed
2832
+
2833
+ - Hook-timeout reports remain visible as warning events with stable grouping and
2834
+ diagnostic tags. Repeated reports are rate-limited while the next capture
2835
+ records the suppressed count.
2836
+
2837
+ ## [5.129.0] — 2026-09-22
2838
+
2839
+ ### Added
2840
+
2841
+ - `hq report` publishes a channel report folder to a fixed hq-deploy slug,
2842
+ injects a strict Content-Security-Policy, and writes the run back onto the
2843
+ report record. The same command group covers draft publish, promote,
2844
+ discard-draft, access, adopt (install the bot's own job), and decommission.
2845
+
2846
+ - `hq report templates --json` lists the shipped report templates
2847
+ (`daily-digest`, `blank`). The cloud job prompt is the `update-report`
2848
+ runbook stored in `templates/runbooks/update-report.md`.
2849
+
2850
+ ## [5.128.0] — 2026-09-22
2851
+
2852
+ ### Fixed
2853
+
2854
+ - Expected hook-timeout warnings are counted as Sentry metrics, so a slow hook
2855
+ does not create its own Sentry issue. Genuine timeouts use stable grouping.
2856
+
2857
+ ## [5.127.0] — 2026-09-22
2858
+
2859
+ ### Added
2860
+
2861
+ - Every composed lane brief and every resume turn carries a foreground-only
2862
+ rule after the standing authorization: run every command, test suite and
2863
+ check in the foreground and wait for it; a turn that ends before the envelope
2864
+ is written is classified interrupted.
2865
+ - The spec §4 envelope repair turn now runs for grok as well. A provider with
2866
+ no session resume gets one fresh single-turn invocation on the same account
2867
+ carrying the schema, the parser error and the raw failed output. The lane
2868
+ records `envelope_repair.mode` as `resume` (claude, codex) or `fresh_turn`
2869
+ (grok) and `hq lanes show` prints it as `envelope_repair_mode`.
2870
+ - Lane records now reject omissions of required `hq-lane.v1` fields, and lane
2871
+ mutations enforce the durable field-writer ownership map at the store boundary.
2872
+ The map grants `reconcile` the quota fields it writes during dead-host
2873
+ recovery, the outpost pickup account bind carries the `spawn` writer, and
2874
+ `terminal_details` and `outpost_command_id` are typed and owned. The writer
2875
+ argument is a required writer name; the function-form call that skipped the
2876
+ ownership check is gone. The updater receives a deep clone and the check
2877
+ compares against the pre-update snapshot, so mutating the argument in place
2878
+ cannot bypass ownership.
2879
+ - Answer notes reach a resumed lane: `answered-questions.json` carries the
2880
+ operator's `--notes` text read from the lane's own body store, and the resume
2881
+ prompt renders each answer as its choice followed by the notes.
2882
+ - Every lane brief and every resume turn carries a standing authorization
2883
+ paragraph: the brief authorises completing every item it lists, and a
2884
+ `decision: ask` envelope is only for a decision the brief does not settle.
2885
+ - A question whose options are only continue and stop is recorded with
2886
+ `question_kind: "continue"` and `hq lanes questions list` prints it with
2887
+ `flag: "continue-loop"`. Nothing answers it automatically.
2888
+ - `hq lanes list` reports `senior_lost: true` for a running lane whose senior
2889
+ session is absent, ended, or lost, without mutating the lane.
2890
+ - `hq lanes questions answer --freeform <text>` answers a question that offered
2891
+ options with free text and records `answer_kind: freeform`.
2892
+ - `hq lanes resume <lane-id> [--text <message>]` resumes an `interrupted`,
2893
+ `done` or `blocked` lane on its recorded provider session and records
2894
+ `resumed_from`. Codex lanes record their session id at spawn and resume with
2895
+ `codex exec resume`, so `hq lanes message` and the envelope repair turn now
2896
+ work for exited Codex lanes as they do for Claude.
2897
+ - Lanes now report to the work mesh from the watcher, not only at create. A
2898
+ lane that finishes posts a completion event and moves its story to review;
2899
+ one that stops to ask posts the question ids; one that is blocked posts the
2900
+ reason. While a lane is working, the watcher posts a progress event when it
2901
+ sees a new tool call or new output, at most once per five minutes per lane
2902
+ (`providers.<provider>.progress_event_min_interval_ms` in
2903
+ `personal/lanes/config.json`), and never for silence. The watcher signs in
2904
+ the same way the session hooks do and never opens a browser; when it cannot
2905
+ reach the mesh it writes `mesh_event_failed` to the lane's watcher log and
2906
+ the lane's state is unchanged. On the wire, lane events use the mesh's
2907
+ existing activity, question, and note kinds, because the server rejects
2908
+ unknown kinds.
2909
+ - A lane whose final output is not a valid envelope gets one repair turn: the
2910
+ same session is resumed with the schema, the parser error, and the raw text,
2911
+ and asked for the corrected JSON only. If that also fails the lane is
2912
+ `failed` with reason `envelope_invalid`, and `envelope_repair` on the record
2913
+ carries both errors. Codex and Grok lanes cannot be resumed after exit, so
2914
+ they still fail on the first parse error; the record says why no repair ran.
2915
+ - A worker with `verification.approval_required` or `human_checkpoints` now
2916
+ briefs its lane to stop at each checkpoint with a `decision: ask` envelope
2917
+ naming the checkpoint. The resume prompt after the answer carries the answer
2918
+ inline as well as naming the answers file.
2919
+ - `hq lanes ask` retries delivery three times, waiting 5 s then 15 s, when the
2920
+ CLI is being replaced under it. On final failure it writes
2921
+ `ask_delivery_failed.json` and returns `ask_delivery_failed`; the lane's
2922
+ state is never changed.
2923
+ - You can hand a piece of work off to run on its own, and it keeps going after
2924
+ you close the window. If it hits something only you can decide, it stops and
2925
+ asks instead of guessing, and picks up again the moment you answer — you no
2926
+ longer have to sit and watch it. If it goes quiet for twenty minutes, you are
2927
+ told. Work sent to a second machine that would have landed back on the one
2928
+ that asked is stopped before it starts.
2929
+ - `hq lanes create --model` records the model on the lane and passes the
2930
+ provider's own flag (`--model` for Claude, `-m` for Codex and Grok).
2931
+ Account and provider `model` keys in `personal/lanes/config.json` are
2932
+ defaults; `--model` wins. An empty `--model` is refused.
2933
+ - Lane envelopes may include `story_complete` and `story_complete_reason`.
2934
+ `story_complete true` requires `story_status done`; `false` forbids it.
2935
+ Both are copied onto the lane record when an envelope is ingested.
2936
+ - `hq lanes create --effort <level>` sets reasoning effort per provider
2937
+ (`--effort` for Claude, `-c model_reasoning_effort` for Codex,
2938
+ `--reasoning-effort` for Grok), validated against each provider's own set.
2939
+ `effort` on an account or provider in `personal/lanes/config.json` is the
2940
+ default; with nothing set, an Opus or Fable model runs at `low`.
2941
+ - A resumed Claude lane whose last message is older than `compact_after_ms`
2942
+ (default one hour) is compacted with `/compact` before the resume, and the
2943
+ lane records the outcome and the before/after context size. `hq lanes
2944
+ message --no-compact` skips it once. `accounts list` and `show` report
2945
+ model, effort and the last compaction.
2946
+ - `--worker` resolves workers from `core/workers`, `personal/workers`,
2947
+ `companies/<co>/workers`, and packages mounted by `hq core scan-packages`.
2948
+ A worker id present in two trees is refused; a pack worker that is declared
2949
+ but not mounted is `package_workers_unmounted`.
2950
+ - A provider 429 is recorded per account and model in
2951
+ `personal/lanes/quota.json` (`account_quota_exhausted` with the reset time,
2952
+ or `account_model_unavailable` when a model needs credits). The balancer
2953
+ skips only what cannot run and never rewrites the operator's `enabled`.
2954
+ - `hq mesh story` accepts `--assignee <uid|me|none>` with or without `--status`.
2955
+ `me` uses the authenticated person or agent and refuses the synthetic session
2956
+ identity. `none` clears the assignee. The command does not send an actor.
2957
+ - `hq mesh project set <projectId> --company <slug>` now reads and merges the
2958
+ current Board view before replacing it, so a name or description update keeps
2959
+ existing stories and repository bindings. It accepts repository bindings from
2960
+ PRD `metadata.repos`, `--repos-json`, or repeatable `--repo <path[@branch]>`.
2961
+ `hq mesh project register <projectId> --company <slug>` registers the Board's
2962
+ deterministic project channel and genesis thread without raw API calls.
2963
+ - A work-context session-state lock or directory creation failure is reported
2964
+ as not tracking (exit 3) instead of an uncaught filesystem error.
2965
+ - The Work Mesh daemon now distinguishes an explicit device-default membership
2966
+ revocation from malformed or unavailable membership lookups. Temporary
2967
+ failures preserve attribution and retry later; explicit denials clear only
2968
+ the unchanged device-default binding through the shared session-state lock,
2969
+ so concurrent rebinds are preserved. Transcript-start discovery also leaves
2970
+ unavailable lookups unstarted and retries with bounded backoff.
2971
+
2972
+ ### Fixed
2973
+
2974
+ - `hq agents status` no longer tells you to sign in to a brain that is already
2975
+ signed in. A device pairing file can outlive the sign-in it started, so the
2976
+ box sign-in probe now decides whether the prompt is shown. Grok and Codex
2977
+ prompts are matched to their own brain slot; a Claude prompt has no slot and
2978
+ is unaffected.
2979
+ - Lane watcher mesh calls now time out, progress events only follow new
2980
+ activity, and a persisted progress timestamp prevents duplicate events after
2981
+ a watcher restart. Invalid-envelope repair is limited to one attempt even
2982
+ when the repair writes a different envelope filename.
2983
+ - Completion mesh delivery attempts the thread event and story review update
2984
+ independently. Repair prompts cap inlined malformed JSON while retaining the
2985
+ raw envelope path.
2986
+
2987
+ - `hq lanes reconcile install --enable` now enables the systemd user timer; the
2988
+ generated unit uses `KillMode=process` so admitted lanes survive the pass, and
2989
+ its PATH carries the directories of the resolved provider binaries. A provider
2990
+ binary missing from PATH at spawn leaves the lane `queued` with
2991
+ `provider_binary_missing` instead of failing it.
2992
+ - A provider binary missing from PATH re-queues a lane only on admission. An
2993
+ answered-question or operator-message resume keeps the lane's recorded state
2994
+ and returns `provider_binary_missing` with the searched PATH, so the next
2995
+ reconcile resumes the recorded session instead of starting a fresh run and
2996
+ the operator message is not lost.
2997
+ - `hq lanes reconcile install` succeeds on a box with only one provider
2998
+ installed. The unit PATH carries the providers that resolve; the result lists
2999
+ `providers_resolved`, `providers_unresolved`, and a `warnings` line per
3000
+ missing provider. It refuses with `provider_binary_unresolved` only when no
3001
+ enabled provider resolves.
3002
+ - `hq lanes questions answer` treats a whitespace-only `--freeform` as absent,
3003
+ so `--choice` is validated against the options and recorded as an option
3004
+ answer instead of an empty freeform answer.
3005
+ - A synced question conflict sidecar whose `answer_history` is not an array is
3006
+ skipped like any other unreadable sidecar instead of failing every read of
3007
+ the question.
3008
+ - `hq lanes resume` now keeps terminal lanes terminal when account binding
3009
+ fails, records project or story attribution without requiring `--text`, and
3010
+ rejects a concurrent resume that has already become running. Blocked mesh
3011
+ notes use the accepted `audit` note kind and include their reason in text so
3012
+ the server preserves the marker.
3013
+
3014
+ - `hq agents list` shows an agent whose removal is under way as `removing`
3015
+ rather than the runtime status it had before the removal started. An agent
3016
+ that never finished setting up and is then removed used to keep reading
3017
+ `provisioning` until the teardown completed, so a removal that stalled
3018
+ looked like a removal that was never accepted. A finished teardown reads
3019
+ `removed`; every other agent is unchanged.
3020
+ - `hq lanes accounts list` treats Claude as logged in when
3021
+ `.credentials.json` exists. Missing Claude credentials are reported as
3022
+ unknown, not logged out. Codex and Grok still use `auth.json`.
3023
+ - With no `--account`, a lane is assigned the least-loaded enabled
3024
+ logged-in account rather than `default_account`.
3025
+ - A lane watcher now writes a JSON line to `logs/watcher.out` for each
3026
+ decision that changes what it believes: a liveness transition, a silence
3027
+ deadline, an envelope appearing, the exit classification, and the
3028
+ terminal record write. `hq lanes logs` reports each stream's path, size
3029
+ in bytes, and lines, so an empty log file is distinguishable from a
3030
+ missing lane. `watcher.out` is capped at 256 KiB by dropping the oldest
3031
+ complete lines. `hq lanes message` refuses a lane that will never read
3032
+ the drop box (`awaiting_input`, `blocked`, and every terminal state) and
3033
+ still accepts a queued lane. After the HQ root is resolved, `hq lanes`
3034
+ chdirs into it; relative `--brief-file` and `--payload-file` paths still
3035
+ resolve against the caller's original directory.
3036
+ - `hq lanes` no longer treats a git worktree's `.claude` folder as the HQ
3037
+ root, and it honours `$HQ_ROOT` the same way the watcher and reconcile
3038
+ timer already did. Listing or creating a lane from a worktree talks to
3039
+ the real store, or fails out loud — it does not return an empty success
3040
+ against a directory nothing else reads.
3041
+ - Creating a lane with `--outpost` now pushes it through `hq outposts exec`
3042
+ instead of leaving a queued row that no machine will pick up. If the
3043
+ Outpost is unreachable, the lane is failed, not queued.
3044
+ - A lane that finishes by asking a question now actually queues that question,
3045
+ so someone can answer it and the lane can continue. Stopping a lane now
3046
+ stops the process, not only the record. The drain hook that delivers
3047
+ mid-run answers is installed into the account home instead of sitting unused
3048
+ in the package. The periodic reconcile timer now names this HQ tree, so it
3049
+ does not wander into `$HOME/.claude`. A live lane heartbeats from its
3050
+ watcher; a dead watcher is started again; a reused PID is not treated as
3051
+ the worker still running; a malformed drop-box line no longer wedges every
3052
+ tool call.
3053
+ - `hq mesh start` now resolves its claimant from the token that authenticates
3054
+ the request before considering a same-identity cache entry. This prevents an
3055
+ agent from claiming work as a cached human and stops locally before creating
3056
+ a thread when no authenticated claimant can be established.
3057
+
3058
+ - `hq mesh context backfill-held` no longer reports `reconciled: 0` when
3059
+ `--dry-run` predicts non-zero reconcilable sessions. The check that decides
3060
+ whether reconcile produced a durable company binding now recognises a
3061
+ persisted `companySlug` as sufficient — the daemon resolves the uid on its
3062
+ next retry — instead of requiring `companyUid`, which is absent when the
3063
+ reconciler runs without a network membership call. Sessions that have no
3064
+ company evidence at all now appear in a separate `noEvidence` counter so
3065
+ operators can tell them apart from sessions that were genuinely reconciled
3066
+ as slug-only bindings.
3067
+
3068
+ ## [5.126.0] — 2026-09-21
3069
+
3070
+ ### Fixed
3071
+
3072
+ - `hq mesh start` works for people again. It was sending your email address as
3073
+ the claimant, and the server compares that to your person id, so every human
3074
+ start failed with "claimedBy must match the authenticated author" and left
3075
+ the thread unclaimed. Claims now carry your resolved person id (bots keep
3076
+ their agent id).
3077
+
3078
+ ### Changed
3079
+
3080
+ - On Windows, the mesh daemon's Scheduled Task now names the HQ root it was
3081
+ installed for right in the task command (`mesh daemon run --hq-root <path>`)
3082
+ instead of relying on a remembered list of roots. Install only wraps the
3083
+ daemon in `conhost.exe --headless` when the machine is new enough to support
3084
+ it (Windows 10 1809 or later) and says which mode it chose. `hq mesh daemon
3085
+ status` now reports when the task's last start failed, and reminds you that
3086
+ the task only runs while you are logged on. macOS and Linux are unchanged.
3087
+
3088
+ - `hq mesh daemon install` no longer mistakes a code repo for your HQ. It
3089
+ accepts `--hq-root <path>`, otherwise uses `HQ_ROOT`, otherwise walks up
3090
+ from the current folder to the nearest real HQ tree (one with
3091
+ `companies/manifest.yaml` and `core/`, `.claude/`, or `personal/`). A folder
3092
+ that only has `.claude/` does not count. If nothing qualifies, install stops
3093
+ and tells you to pass `--hq-root` instead of recording the wrong root. The
3094
+ install confirmation now leads with the root it chose and how, and `hq mesh
3095
+ daemon status` prints the root the task actually carries and warns when that
3096
+ folder has since moved or been deleted.
3097
+
3098
+ - The setup bot now recognises when you have joined a company that someone
3099
+ else already built. Instead of asking what kind of business you own and
3100
+ offering to connect apps your team connected months ago, it shows you what
3101
+ is already there in real names and counts, answers one real question from
3102
+ your company's own memory, asks what you do there, and offers only what is
3103
+ missing for you. Things only an owner can do now name the owner instead of
3104
+ failing.
3105
+
3106
+ - The setup bot asks which tools you actually use and connects each one
3107
+ however that tool needs it, after recommending the few things a business
3108
+ like yours should set up. It no longer works from a fixed list of apps.
3109
+
3110
+ - Setup no longer asks for your name when you are already signed in, and no
3111
+ longer offers to skip itself.
3112
+
3113
+ ### Fixed
3114
+
3115
+ - The desktop grok bot talks to grok 0.2.56 again. That CLI dropped
3116
+ `--output-format streaming-messages-json` (only `plain`, `json`, and
3117
+ `streaming-json` remain). The bot now reads the value from `grok --help`
3118
+ once and caches it, retries with `streaming-json` if grok rejects the old
3119
+ flag, and concatenates `streaming-json` text deltas for the reply instead
3120
+ of treating them as Anthropic Messages events.
3121
+
3122
+ - `hq core scan-packages` writes pack-mount symlinks relative to the host
3123
+ directory, so they survive a tree moving between machines. A leftover
3124
+ absolute link from another host, or an absolute link that still points at
3125
+ this pack's payload, is rewritten to the relative form on the next scan; a
3126
+ correct relative link is left alone.
3127
+
3128
+ - Work Mesh reconcile now owns company attribution explicitly on the acked
3129
+ path for every register where `resolvedCompany.uid` is set, not only fully
3130
+ bound sessions. Previously the non-bound acked path had no reconcile-owned
3131
+ attribution write and relied on an incidental side effect of
3132
+ `writeAckedRegisterState` → `writeAcknowledgedRegisterBinding`; that side
3133
+ effect already wrote `companyUid`/`companySlug` for ops carrying a uid, so
3134
+ the tenant was not dropped in practice, but any future acked path that
3135
+ preceded or skipped that call would silently lose it. The fix makes
3136
+ attribution explicit: a company-only ack is projected as `needs_project`
3137
+ with its tenant intact, the write reflects the true classification, and no
3138
+ `projectId`, `taskId`, or binding episode is fabricated on partial paths.
3139
+ Note: a company resolved by slug only (no uid) is still not attributed on
3140
+ either path. Tests disable each of those two writers in turn
3141
+ (`writeAckedRegisterState`, and the post-ack `writeSessionState`) and
3142
+ require the other one to still land the company for a company-only ack
3143
+ and a company-plus-project ack. The production write itself landed in
3144
+ `28aee9e` (#670).
3145
+
3146
+ - The setup bot no longer posts the same question twice when a turn takes a
3147
+ while: a question asked in an interim update is held back if the final
3148
+ answer repeats it.
3149
+
3150
+ - On Windows, the work-context config safety check now inspects the file's
3151
+ Windows ACL instead of POSIX mode bits, so `hq mesh context reconcile` no
3152
+ longer refuses every run with "unsafe permissions 666" and session state and
3153
+ register operations are written again. The config file and its directory must
3154
+ be writable only by the current user, SYSTEM, and Administrators; any other
3155
+ principal with write access is rejected, matched by SID so localized account
3156
+ names do not matter, and named in the error. When the ACL cannot be read
3157
+ at all (icacls missing, non-NTFS volume), the check follows a documented
3158
+ reduced-guarantee path: it prints one diagnostic that the config is
3159
+ unprotected on this platform and continues rather than blocking. macOS and
3160
+ Linux behaviour is unchanged.
3161
+
3162
+ ### Added
3163
+
3164
+ - `hq mesh daemon install` now works on Windows. It registers a per-user
3165
+ Scheduled Task (`ai.getindigo.hq-mesh-daemon`) that starts the mesh daemon at
3166
+ logon, hidden, with no execution time limit and a restart-on-failure policy,
3167
+ and starts it right away. `hq mesh daemon status` reports whether the task is
3168
+ registered and running, `hq mesh daemon uninstall` ends and removes it, and a
3169
+ CLI update restarts it like the macOS and Linux services. Before this the
3170
+ three commands answered "No service manager integration on this platform",
3171
+ so the session-event spool never drained on Windows. The task definition is
3172
+ written as XML under `~/.hq/work-mesh/daemon/` and registered with
3173
+ `schtasks.exe`; no new dependencies. macOS and Linux behaviour is unchanged.
3174
+
3175
+ - `hq bot list --json` reports `busy` and `busySince` for each bot on this
3176
+ computer, and `hq bot status` shows an `answering:` line. Apps use this to
3177
+ keep a "thinking" indicator up for a whole turn, rather than ending it the
3178
+ moment the bot posts a progress note.
3179
+
3180
+ - Library layer for `hq lanes` (`src/lib/lanes/`): lane/question record store
3181
+ with compare-and-set writes, provider-account resolution, CPU/memory throttle,
3182
+ session liveness from the work-mesh spool, and path-keyed worker tenancy.
3183
+
3184
+ - `hq lanes` command surface: create/list/show/message/reparent/logs/stop,
3185
+ non-blocking ask, questions list/show/answer/escalate/cancel, accounts
3186
+ list/login/enable/disable, and sessions list/show. Create admits against
3187
+ provider caps, the bounded queue, and the host throttle, then leaves the
3188
+ lane queued — process spawn is an explicit not-implemented seam.
3189
+
3190
+ ## [5.125.0] — 2026-09-20
3191
+
3192
+ ### Fixed
3193
+
3194
+ - Work Mesh now preserves an acknowledged company binding through later
3195
+ company-less hook writes, preventing repeated registrations and held events.
3196
+ Held recovery accepts only durable registrations, canonical metadata under a
3197
+ verified HQ root, or manifest-backed repository ownership; conflicting or
3198
+ event-only hints stay unresolved. Its batch cursor rotates across restarts.
3199
+ Both legacy and direct-mode daemons detect an upgraded CLI, and systemd units
3200
+ use `Restart=always` so the installed service reloads the new code.
3201
+
3202
+ - Held-session recovery now accepts session metadata only from the daemon's
3203
+ configured HQ root, requires current-session evidence before restoring an
3204
+ acknowledged registration, and retains batch position when held records are
3205
+ compacted. Repeated hook activity no longer re-registers an unchanged binding.
3206
+ CLI updates report installed system units that need their host service manager
3207
+ to restart them. Daemon installs persist verified HQ-root allowlists, inject
3208
+ the primary root into service environments, and rewrite/reload existing user
3209
+ units so upgraded daemons restart reliably.
3210
+
3211
+ ### Added
3212
+
3213
+ - Work Mesh now activates a device default company automatically when a signed-in
3214
+ person has exactly one active membership. Devices with several memberships ask
3215
+ for a choice in interactive CLI paths and show the stored state in `hq mesh
3216
+ context default get --json`. Clearing the default is a durable opt-out until
3217
+ the person explicitly sets one again. Historical held sessions remain unchanged
3218
+ unless `hq mesh context backfill-held --use-device-default` is supplied; those
3219
+ repaired records are labeled lower-confidence and counted by daemon doctor.
3220
+
3221
+ ## [5.124.0] — 2026-09-20
3222
+
3223
+ ### Added
3224
+
3225
+ - `hq billing sponsor` — ask a company to cover your $50/mo HQ Individual plan
3226
+ from the terminal, and answer those requests if you run the company.
3227
+ `request <company>` asks, `list` shows the queue you can answer or — if you
3228
+ are not an admin there — your own single status for that company, and
3229
+ `approve` / `decline` / `revoke` / `withdraw` resolve one. Pass `--company`
3230
+ to `list` when you are asking about your own state.
3231
+
3232
+ Approving does not always finish the job: if the company has no card on file,
3233
+ HQ accepts the yes but nothing is covered yet, and `approve` says so with the
3234
+ link to add one. This is off until HQ turns it on; until then the commands
3235
+ say it is not available yet rather than failing with a validation error.
3236
+
3237
+ ## [5.123.2] — 2026-09-19
3238
+
3239
+ ### Fixed
3240
+
3241
+ - Company slug lookup no longer prints `Failed to resolve company slug '…':`
3242
+ with nothing after the colon. Transient failures (timeouts, 429, 5xx) are
3243
+ retried once, and the error names the HTTP status and says it is a temporary
3244
+ lookup failure rather than a missing company.
3245
+
3246
+ ## [5.123.1] — 2026-09-19
3247
+
3248
+ ### Fixed
3249
+
3250
+ - Work Mesh now preserves an acknowledged company binding through later
3251
+ company-less hook writes, preventing repeated registrations and held events.
3252
+ Held recovery accepts only durable registrations, canonical metadata under a
3253
+ verified HQ root, or manifest-backed repository ownership; conflicting or
3254
+ event-only hints stay unresolved. Its batch cursor rotates across restarts.
3255
+ Both legacy and direct-mode daemons detect an upgraded CLI, and systemd units
3256
+ use `Restart=always` so the installed service reloads the new code.
3257
+
3258
+ - Held-session recovery now accepts session metadata only from the daemon's
3259
+ configured HQ root, requires current-session evidence before restoring an
3260
+ acknowledged registration, and retains batch position when held records are
3261
+ compacted. Repeated hook activity no longer re-registers an unchanged binding.
3262
+ CLI updates report installed system units that need their host service manager
3263
+ to restart them. Daemon installs persist verified HQ-root allowlists, inject
3264
+ the primary root into service environments, and rewrite/reload existing user
3265
+ units so upgraded daemons restart reliably.
3266
+
3267
+ ## [5.123.0] — 2026-09-19
3268
+
3269
+ ### Fixed
3270
+
3271
+ - `hq mesh check --project` lists that project's open threads. The CLI queries
3272
+ `/v1/work-mesh/threads` with `projectId` (and `status=open`) and merges the
3273
+ result with the status listing, because the status index can omit project
3274
+ threads.
3275
+
3276
+ - First signed-in interactive run prints a one-line telemetry disclosure on
3277
+ stderr (once per machine). `HQ_TELEMETRY=0` (also `false` or `off`) disables
3278
+ CLI telemetry posts. After the notice has been shown, events send
3279
+ `consentBasis: "disclosed"` instead of `"no-consent"`.
3280
+
3281
+ ### Added
3282
+
3283
+ - Channel messages can now be posted as thread replies: `hq dm <channel>
3284
+ --thread <eventId> "…"` sends `rootEventId` on the POST, and `--thread last`
3285
+ replies to your most recent top-level message in that channel. `hq dm channel
3286
+ <name>` prints each root's eventId and indents replies under their root
3287
+ (`--json` is still the ungrouped oldest-first array). `@name` mentions were
3288
+ already resolved against the roster into the structured `mentions` array;
3289
+ unknown names still fail the send and list the roster (`--no-mentions` posts
3290
+ the text literally).
3291
+
3292
+ ### Changed
3293
+
3294
+ - `hq whoami --company` and the bind notice no longer read `planLock`. They
3295
+ render the Starter over-limit nag from `GET /v1/billing/usage-limits`
3296
+ (including the top-level `freeMonth` CTA). Customer copy does not say
3297
+ "locked" or "read-only".
3298
+
3299
+ ### Fixed
3300
+
3301
+ - Work Mesh board snapshots now read live story status from ProjectView before
3302
+ falling back to the vault board, and `hq mesh daemon doctor` warns when a
3303
+ presence credential omitted companies.
3304
+
3305
+ ## [5.122.2] — 2026-09-19
3306
+
3307
+ ### Fixed
3308
+
3309
+ - Local bots no longer retry inbox polls and heartbeats every couple of seconds
3310
+ after HQ returns 429. They honour Retry-After when present and otherwise back
3311
+ off, so a rate limit can clear instead of being held forever. `hq bot status`
3312
+ now says unreachable / cannot receive when those calls are failing, instead of
3313
+ HQ online from the last attempt, and `hq doctor` checks the same.
3314
+
3315
+ - `hq bot start` / `restart` rewrites a LaunchAgent that still points at the
3316
+ old toolchain `node/bin/hq` path after an HQ update moved the CLI to
3317
+ `npm-global/bin/hq`, which previously failed with MODULE_NOT_FOUND until
3318
+ someone ran `hq bot daemon install` by hand.
3319
+
3320
+ ## [5.122.1] — 2026-09-19
3321
+
3322
+ ### Fixed
3323
+
3324
+ - `hq cloud provision company` no longer silently accepts a server-suffixed
3325
+ slug. When another owner already holds the requested name, the vault assigns
3326
+ `<slug>-<tag>` and used to write local config as if the original name had
3327
+ been granted — sync then cannot push, because it looks for a folder matching
3328
+ the cloud slug. Provision now fails before writing, and retires the
3329
+ just-created entity so it does not leave a suffixed orphan.
3330
+
3331
+ - Work Mesh now keeps the company you selected when its session context is
3332
+ acknowledged or recovered after a restart. Mesh activity stays attached to
3333
+ the right company instead of being held for missing attribution.
3334
+
3335
+ ## [5.122.0] — 2026-09-18
3336
+
3337
+ ### Added
3338
+
3339
+ - A bot can now join HQ from the computer its owner already uses. Before,
3340
+ `hq agent enroll` refused on such a machine — the owner is signed in there,
3341
+ and an agent identity must not share a host account with a person's login —
3342
+ which left two bad options: a second user account, or `--replace`.
3343
+
3344
+ Enrollment now moves the bot into its own directory instead of refusing:
3345
+ `~/.hq-agent/<name>/`, with its own credentials, key, state and logs. The
3346
+ owner's session file is never read, moved, or changed. `hq agent probe`,
3347
+ `hq agent kit`, `hq agent inbox` and `hq agent mcp` all find that directory
3348
+ on their own, so the bot is itself without anyone exporting environment
3349
+ variables. Use `--name <bot>` to choose the directory, or to run a second
3350
+ bot on the same computer.
3351
+
3352
+ Two or more local bots are deliberately ambiguous: `hq agent` commands then
3353
+ ask for `HQ_AGENT_DIR` rather than guessing which identity to act as.
3354
+
3355
+ ## [5.121.2] — 2026-09-18
3356
+
3357
+ ### Added
3358
+
3359
+ - `hq cloud retire company <slug>` soft-tombstones a cloud company (owner
3360
+ only, confirm unless `--yes`) so `hq cloud demote company` can run without
3361
+ `--propagate-deletes`. Vault files stay; local folders are not touched.
3362
+
3363
+ ## [5.121.1] — 2026-09-18
3364
+
3365
+ ### Fixed
3366
+
3367
+ - `hq --version` prints only the CLI version again. The labelled HQ vs CLI vs
3368
+ latest hq-core report stays on `hq version` (and `--json`). Older updaters
3369
+ compare the whole `--version` output to the CLI they just installed; reading
3370
+ the HQ line made every successful update look like a second install was
3371
+ shadowing it.
3372
+
3373
+ ### Documentation
3374
+
3375
+ - The 2026-09-18 fleet-bots GA notes group the published CLI changes for plan
3376
+ notices, DM attachments, staged skills, version reporting, knowledge-index
3377
+ protection, and ambiguous people resolution (#634, #636, #641, #642, #643,
3378
+ #644, #645, #647, #648, #649).
3379
+
3380
+ ## [5.121.0] — 2026-09-18
3381
+
3382
+ ### Changed
3383
+
3384
+ - The agent kit no longer installs a work-mesh doorbell listener, and
3385
+ `hq agent probe` no longer checks one. The doorbell was never what made a
3386
+ bot reachable — messages arrive over the inbox either way — but it was the
3387
+ loudest part of setup: it needed a realtime connection that restricted bot
3388
+ hosts routinely intercept, so a perfectly healthy bot reported a failure it
3389
+ could do nothing about.
3390
+
3391
+ The probe's `work-mesh` line becomes `presence`: the agent's own inbox
3392
+ answers and its heartbeat is fresh. That is what the check was really
3393
+ proving. `hq mesh` remains available to a bot that is asked to use it; the
3394
+ kit simply no longer runs a listener or ships a skill telling it to.
3395
+
3396
+ One trade-off: an inbox doorbell used to trigger an immediate poll. Without
3397
+ it, incoming messages are picked up by the inbox poller on its own interval
3398
+ (15 seconds by default) rather than instantly.
3399
+
3400
+ ## [5.120.1] — 2026-09-18
3401
+
3402
+ - A local bot no longer replaces your own sign-in. Bots that run on your
3403
+ computer (the setup bot included) keep their session in their own folder
3404
+ now, instead of the file HQ uses to know who you are. Before, a bot could
3405
+ overwrite that file and HQ would then treat the bot as you: its name in
3406
+ place of yours, no companies, a profile that would not save, and sync
3407
+ failing. If that already happened on your computer, `hq` now ignores the
3408
+ bot's session there and asks you to sign in as yourself. (hq-cloud 6.16.60)
3409
+
3410
+ ## [5.120.0] — 2026-09-18
3411
+
3412
+ ### Added
3413
+
3414
+ - `hq agents provision` can reuse an existing Slack bot token through flags,
3415
+ environment variables, or stdin. Socket Mode agents can also accept their
3416
+ app-level token. HQ validates both tokens and the bot's required Slack scopes
3417
+ before it creates the agent.
3418
+
3419
+ ## [5.119.15] — 2026-09-18
3420
+
3421
+ ### Fixed
3422
+
3423
+ - `hq people resolve <name>` now reports ambiguity when the name matches more
3424
+ than one person instead of selecting the first match.
3425
+
3426
+ ## [5.119.13] — 2026-09-18
3427
+
3428
+ ### Added
3429
+
3430
+ - `hq version` (and `hq --version`) print the installed HQ version, the CLI
3431
+ version labelled as CLI, and the latest hq-core release. If a newer HQ is
3432
+ out it says to run `/update-hq`; if the lookup cannot reach the network it
3433
+ says so instead of going quiet. `hq version --json` prints the same payload.
3434
+
3435
+ ### Fixed
3436
+
3437
+ - `hq core rebuild-index company-knowledge` no longer silently replaces a
3438
+ hand-written company knowledge INDEX. If the file is not the last generated
3439
+ output, the command refuses, prints a short diff, and asks for `--accept`.
3440
+ `<!-- hq:keep -->` opts the whole file out; `<!-- hq:keep -->` … `<!-- /hq:keep -->`
3441
+ fences are kept while the table regenerates. Subdirectory README headings
3442
+ are projected into the description column so the generated index is usable
3443
+ without hand edits.
3444
+
3445
+ ## [5.119.12] — 2026-09-18
3446
+
3447
+ ### Fixed
3448
+
3449
+ - `hq files cat … --company prs_<person-uid>` now reads the file instead of
3450
+ refusing with "No company found for slug". Reading a DM attachment needs the
3451
+ sender's vault as the scope, and `cat` resolved that value as a company slug
3452
+ of its own, after the same fix landed on the presign path.
3453
+
3454
+ ## [5.119.11] — 2026-09-18
3455
+
3456
+ ### Added
3457
+
3458
+ - On a personal account, My Telemetry is part of the paid Individual plan
3459
+ ($50/mo). When the server withholds it, the CLI now prints a short notice
3460
+ naming the plan and where to upgrade, instead of the raw refusal. Company
3461
+ plans are unaffected, and the notice has nothing to do with the plan-limit
3462
+ nags — it is a plan fact, printed once, where it happened.
3463
+
3464
+ ### Fixed
3465
+
3466
+ - `hq files … --company prs_<person-uid>` now reaches that person's vault
3467
+ instead of failing with "Company slug ... was not found". This is how a DM
3468
+ recipient reads a file attached to a message: the attachment lives in the
3469
+ sender's personal vault, so naming the sender is the only scope that works.
3470
+
3471
+ ## [5.119.10] — 2026-09-18
3472
+
3473
+ ### Added
3474
+
3475
+ - `hq skill register` reserves a company skill UID from a proposal-lane
3476
+ source and writes the server-stamped bytes only to `--stamped-output`.
3477
+ It does not write `companies/<company>/skills/`, create a discovery
3478
+ wrapper, or sync. `hq skill promote` copies those exact bytes into the
3479
+ canonical skill path only after `--expected-sha256` matches and the
3480
+ stamped `skill_uid` matches the server registration. A differing
3481
+ canonical file requires `--reviewed-update`. Use `--no-sync` to leave
3482
+ upload to a later steward command.
3483
+
3484
+ ## [5.119.9] — 2026-09-17
3485
+
3486
+ ### Added
3487
+
3488
+ - The CLI now prints a one-time notice when your workspace crosses a plan
3489
+ threshold — reaching 80% of a Starter limit, or going past one. The server
3490
+ decides when a threshold has been crossed and sends it with the response, so
3491
+ a session you already have open surfaces the notice on its next API call
3492
+ rather than on its next launch. Each `{resource}:{band}` is printed exactly
3493
+ once per episode, remembered in `~/.hq/plan-limit-nag.json`; a dimension that
3494
+ drops back under the threshold and climbs again is announced again.
3495
+ `HQ_NO_PLAN_LIMIT_NAG=1` silences it along with the other plan-limit lines.
3496
+
3497
+ ### Fixed
3498
+
3499
+ - A file attached to a DM is now visible to a bot reading its mail. `hq dm
3500
+ inbox`, `hq dm thread`, `hq dm channel` and `hq agent inbox` print each
3501
+ attached file's name, type and vault path under the message body; the JSON
3502
+ forms carry an `attachments[]` field. Previously only the body text was
3503
+ rendered, so an agent sent a screenshot answered "no image came through".
3504
+
3505
+ ## [5.119.8] — 2026-09-17
3506
+
3507
+ ### Fixed
3508
+
3509
+ - Channel posts that mention people by full name no longer show the parsing
3510
+ quotes in the room. `@"Jacob Posel"` is still how a multi-word name is
3511
+ typed, but the message is posted as `@Jacob Posel`, the way a person would
3512
+ have written it. The structured mention itself is unchanged.
3513
+
3514
+ ## [5.119.7] — 2026-09-17
3515
+
3516
+ ### Fixed
3517
+
3518
+ - When the kit cannot install its `@reboot` entry because the host has no
3519
+ `crontab` at all, the install now says so and names the package to install,
3520
+ instead of reporting a raw ENOENT the operator cannot act on. A minimal
3521
+ container image routinely ships without cron; the Muse pilot hit this the
3522
+ first time the reboot entry was attempted.
3523
+
3524
+ ## [5.119.6] — 2026-09-17
3525
+
3526
+ ### Fixed
3527
+
3528
+ - Slack token paste links now use the company's canonical Console slug. Links
3529
+ built with an internal company ID redirected to the company home and lost the
3530
+ agent setup form.
3531
+
3532
+ ## [5.119.5] — 2026-09-17
3533
+
3534
+ ### Fixed
3535
+
3536
+ - When a new Slack agent is waiting for a Socket Mode app-level token, `hq
3537
+ agents status` now shows a link to create the token and a direct link to the
3538
+ HQ form where it can be pasted. The same links are included in JSON output.
3539
+
3540
+ ### Changed
3541
+
3542
+ - Starter now includes 1 integration instead of none, and the lock copy says
3543
+ so. The notice reads "too many integrations", quotes "Integrations allowed
3544
+ on Starter: 1", and tells you to "disconnect integrations until you are at 1
3545
+ or fewer"; the per-turn line reads "over its 1-integration limit". Nothing in
3546
+ the CLI says Starter has no integrations any more.
3547
+ - Plan-limit messages now say what is actually happening. Going over a Starter
3548
+ limit never stopped the workspace, and the copy no longer implies it did:
3549
+ the words "locked" and "read-only" are gone from every line `hq` prints, and
3550
+ the notice states the two things that do pause — adding new files and adding
3551
+ new secrets — while everything else keeps working. A test scans every
3552
+ rendered string for both words so the copy cannot drift back.
3553
+ - The over-limit per-turn nag is one line instead of a box, and it repeats at
3554
+ most once every 6 hours (was once a day). `HQ_NO_PLAN_LIMIT_NAG=1` still
3555
+ silences it.
3556
+
3557
+ ## [5.119.4] — 2026-09-17
3558
+
3559
+ ### Fixed
3560
+
3561
+ - On a host with no usable service manager, `hq agent kit install` now installs
3562
+ the `@reboot` crontab entry that restarts the kit, instead of printing the
3563
+ line and trusting it to be pasted. A supervisor that does not survive a
3564
+ reboot is not a supervisor: on the Muse pilot the host restarted, the
3565
+ supervisor died with it, nothing brought it back, and the agent silently
3566
+ stopped seeing new messages while every surface still reported healthy. The
3567
+ entry is marked and replaced on reinstall rather than stacked, and every
3568
+ other crontab line is preserved. If the crontab cannot be written the install
3569
+ still succeeds but says so in red, naming the consequence and printing the
3570
+ line to add by hand.
3571
+
3572
+ ## [5.119.3] — 2026-09-17
3573
+
3574
+ ### Fixed
3575
+
3576
+ - `hq agent inbox` now merges the agent's own server inbox with the kit's local
3577
+ mirror instead of reading the mirror alone. The mirror is only as fresh as
3578
+ the kit's poller, and when that process dies nothing says so — the listing
3579
+ simply stops growing. On the Muse pilot the host rebooted, the kit supervisor
3580
+ died with it and was never restarted, and the command kept confidently
3581
+ answering with the eight messages from before the reboot while the server had
3582
+ every newer one: no error, no empty result, no stale marker, just an agent
3583
+ that had gone deaf and could not tell. When the server cannot be reached the
3584
+ mirror is still returned, with a note saying it may be stale. `hq_inbox_read`
3585
+ already merged; both now share one implementation.
3586
+
3587
+ ## [5.119.2] — 2026-09-17
3588
+
3589
+ ### Fixed
3590
+
3591
+ - The work-mesh listener falls back to its periodic refetch when the MQTT
3592
+ doorbell is unreachable, instead of retrying forever and reporting
3593
+ `component-mesh=error` the whole time. The doorbell is an optimisation over a
3594
+ REST source of truth, so a host that cannot reach AWS IoT has a slower
3595
+ doorbell, not a broken agent. Some bot sandboxes sit behind an egress proxy
3596
+ that intercepts the connection and answers with non-TLS bytes
3597
+ (`tls_validate_record_header:wrong version number`). After five failed
3598
+ attempts the listener says so once, keeps the cache current on the periodic
3599
+ cadence, and retries MQTT every 30 minutes so a bot moved to an unrestricted
3600
+ network recovers its instant doorbell on its own. Incoming DMs are
3601
+ unaffected either way — the inbox poller is a separate service.
3602
+
3603
+ ## [5.119.1] — 2026-09-17
3604
+
3605
+ ### Fixed
3606
+
3607
+ - A kit.json written before `syncFiles` existed now reads as NOT syncing, the
3608
+ same as a fresh install. 5.119.0 read it as `true` to preserve the behaviour
3609
+ it recorded, which was wrong twice over: the bots with such a file are
3610
+ exactly the ones the mirror is failing on, and because a bare reinstall keeps
3611
+ recorded settings, the documented fix — reinstall the kit — left the sync
3612
+ loop running and `hq agent probe` still pulling the whole vault. A reinstall
3613
+ now removes that loop. A bot that genuinely wants the local mirror passes
3614
+ `--sync-files` once.
3615
+
3616
+ ## [5.119.0] — 2026-09-17
3617
+
3618
+ ### Changed
3619
+
3620
+ - External agents no longer copy the company vault onto their own machine.
3621
+ `hq agent kit install` used to install a sync loop that mirrored the whole
3622
+ vault to disk; a bot reads and writes vault files on demand through the `hq`
3623
+ MCP server and the `hq files` commands, so the copy bought nothing for the
3624
+ common case and cost a full download of the company's assets. On a team with
3625
+ a large brand library that is hundreds of megabytes, and on a sandboxed bot
3626
+ host whose egress truncates large responses it could never finish at all —
3627
+ every file retried three times and failed with `ERR_HQ_TRUNCATED_RESPONSE`,
3628
+ which left the probe stuck and the agent reporting a sync error while it was
3629
+ otherwise a healthy team member.
3630
+
3631
+ Pass `--sync-files` if the bot genuinely needs files on disk for shell-based
3632
+ work; a reinstall without it removes a sync loop an earlier install left
3633
+ behind. An existing install is unchanged until it is reinstalled.
3634
+
3635
+ - `hq agent probe` reports a `files` check in place of `team-sync`. Without a
3636
+ local copy it proves the read path the bot actually uses — a vault listing
3637
+ answers — instead of downloading the vault to prove a folder exists. With
3638
+ `--sync-files` it checks the pull exactly as before.
3639
+
3640
+ - The heartbeat reports only the components the kit runs. A component that was
3641
+ never installed is omitted rather than reported as an error, so a bot with no
3642
+ sync loop no longer looks broken.
3643
+
3644
+ - `hq_search` no longer runs a local index search on an agent that has no local
3645
+ copy, where it could only ever return nothing. It runs the server-side vault
3646
+ search instead, and says plainly that content and semantic search need a kit
3647
+ installed with `--sync-files`.
3648
+
3649
+ ## [5.118.2] — 2026-09-17
3650
+
3651
+ ### Changed
3652
+
3653
+ - The locked-workspace notice now says what you can still do. A locked
3654
+ workspace is read-only for new things, but deleting still works — which
3655
+ matters, because every fix the notice lists (remove members, disconnect
3656
+ integrations, delete secrets, deprovision agents) is a delete. The notice
3657
+ states that outright instead of leaving "read-only" to be guessed at.
3658
+
3659
+ - The plan-limit box names the plan: "HQ Starter plan limit exceeded" rather
3660
+ than "HQ plan limit exceeded".
3661
+
3662
+ ### Added
3663
+
3664
+ - `hq agents provision --model` now sets the brain model during creation. A
3665
+ model such as `gpt-5.5` or `grok-4.6` selects the agents-v2 runtime unless
3666
+ `--provider` is specified, avoiding a later box recreation to change brains.
3667
+
3668
+ ## [5.118.1] — 2026-09-17
3669
+
3670
+ ### Fixed
3671
+
3672
+ - The locked-workspace notice now names the real reason. A workspace locked
3673
+ because of secrets or agents no longer reads "over its 5-member limit"; each
3674
+ reason gets its own explanation, its own Starter cap and its own fix, and a
3675
+ lock with no recognised reason says only that the workspace is over the
3676
+ Starter limits. The plan-limit warning also names the dimension it is quoting
3677
+ ("users at 9/10 (90%) (members)").
3678
+
3679
+ - You can now remove an HQ Agents v2 agent from the CLI without bypassing its
3680
+ safety check. `hq agents rm` accepts `--confirm-destroy-agents-v2
3681
+ <instance-id>` alongside `--yes` and sends only the instance ID you name; HQ
3682
+ still refuses an ID that does not match the live box.
3683
+
3684
+ ## [5.118.0] — 2026-09-16
3685
+
3686
+ ### Added
3687
+
3688
+ - External agents can now be woken the moment an HQ message arrives. `hq agent kit wake set-url --stdin` points the kit at a webhook, such as a Grok Bot routine webhook trigger. `hq agent kit wake set-command -- <cmd>` runs a local command for frameworks with a CLI. The kit sends a short notice with no message text when mail is pending, and again every 10 minutes until it is handled. The webhook URL is stored privately and never logged.
3689
+ - `hq agent inbox` lists an external agent's pending HQ messages and `hq agent inbox done <id>` marks them handled, so a woken bot never answers the same message twice. The MCP server gains a matching `hq_inbox_done` tool.
3690
+
3691
+ ### Fixed
3692
+
3693
+ - The `hq_inbox_read` MCP tool no longer fails with 403 AGENT_ROUTE_NOT_SUPPORTED. It reads the agent's own inbox instead of the person-only DM inbox, and by default returns only messages not yet handled.
3694
+ - The HQ direct-message skill shipped to external agents no longer tells them to use person-only read commands.
3695
+
3696
+ ## [5.117.3] — 2026-09-16
3697
+
3698
+ ### Fixed
3699
+
3700
+ - `hq doctor --fix` no longer breaks Claude Code sessions. Since HQ moved to a single master hook, the doctor saw every hook script as unregistered. It then added one hook entry per script with no tool filter, so guards such as the Glob path check and core protection ran on every tool call and blocked Bash, Skill and Read with "Glob needs a path" or "Edit to locked path is not allowed". An HQ update could then move those entries into `.claude/settings.local.json`. The doctor no longer auto-registers orphan scripts. It now detects the stray entries in both settings files and `hq doctor --fix` removes them, keeping your permissions and any hooks you added yourself. Scripts listed in `.claude/hooks/hook-registry.json` also no longer show as orphans.
3701
+
3702
+ ### Fixed
3703
+
3704
+ - `hq doctor` now keeps its hook-health compatibility verdict in step with
3705
+ `check-hq-hooks.sh` when either required command hook is missing.
3706
+
3707
+ ## [5.117.2] — 2026-09-16
3708
+
3709
+ ### Fixed
3710
+
3711
+ - External agents: the work-mesh listener no longer fails every refresh with
3712
+ "Agent callers may only use DM, channel comms, and reaction routes". It now
3713
+ re-reads the agent's own inbox on each doorbell instead of the person-only
3714
+ conversation routes.
3715
+ - External agents: `hq agent probe` no longer waits for a DM to itself to show up
3716
+ in the inbox, which the server never delivers. The dm check passes when the
3717
+ send is accepted and the agent inbox is readable.
3718
+ - External agents: kit service logs no longer write every line twice when the
3719
+ services run under a supervisor.
3720
+
3721
+ ### Changed
3722
+
3723
+ - HQ now calls the paid plan by its real name everywhere you see it. If your
3724
+ workspace went over its Starter limit, the notice, the error you got when you
3725
+ tried to write something, and the upgrade prompt used to give three different
3726
+ names for the same plan — "HQ Workforce", "HQ Team", and "Team" — which made
3727
+ it genuinely unclear what you were being asked to buy. They all say HQ
3728
+ Workforce now. The free plan is called Starter rather than "free plan", to
3729
+ match the pricing page.
3730
+
3731
+ ### Fixed
3732
+
3733
+ - `hq doctor` now reports failed hook wiring when `.claude/settings.json` has
3734
+ no usable command hook for `SessionStart` or `PreToolUse`. The file can still
3735
+ be present and valid JSON, but it no longer reads as healthy when nothing runs.
3736
+
3737
+ ## [5.117.1] — 2026-09-16
3738
+
3739
+ ### Fixed
3740
+
3741
+ - `hq agent probe` works for external agents. The work-mesh check no longer
3742
+ reads the owner-only company roster (which answered "Not found" to an agent);
3743
+ it passes when the realtime credential vend names the agent, the agent's own
3744
+ inbox answers, and this host's heartbeat and mesh listener are live. The DM
3745
+ check reads the probe message back from the agent's inbox instead of the
3746
+ human-only thread view that refused agents. Output format is unchanged.
3747
+ - The agent kit's mesh listener stays connected. It now asks for the personal
3748
+ realtime credentials that cover the agent's own doorbell topics (the company
3749
+ presence credentials it used made the connection drop before subscribing),
3750
+ subscribes only to topics those credentials grant, and polls the inbox
3751
+ immediately when an inbox doorbell rings.
3752
+ - Inbox poll failures are diagnosable: the log names the method, full URL,
3753
+ status and the first 300 characters of the response, and the inbox URL keeps
3754
+ any base path from `apiBaseUrl` without doubling `/v1`.
3755
+ - `hq dm inbox` works for agent identities by reading the agent inbox;
3756
+ `hq dm thread` tells agents to use `hq dm inbox` instead of failing with a
3757
+ server refusal.
3758
+ - `hq agent kit install` works on hosts with no systemd user session or
3759
+ launchd: it starts the services under one background `hq agent kit run all`
3760
+ supervisor (restarting any service that exits), records its pid in
3761
+ `~/.hq-agent/kit.pid`, and prints the `@reboot` crontab line that keeps it
3762
+ running after a restart. `kit status` and `kit uninstall` understand this
3763
+ mode.
3764
+
3765
+ ## [5.117.0] — 2026-09-16
3766
+
3767
+ ### Added
3768
+
3769
+ - Your local bots can come back after a reinstall. A bot is an identity HQ
3770
+ keeps for you plus the state that runs it on one computer; wiping that
3771
+ computer's HQ folder, or moving to a new Mac, used to leave every bot dead
3772
+ with no way back — making a new one was refused, because the old one still
3773
+ existed. Now `hq bot restore` brings back every bot you own that is missing
3774
+ from this computer, with its own settings, memory folder and startup agent,
3775
+ keeping the same identity and the same conversation. `hq bot adopt <name>`
3776
+ does one bot, `hq bot list --remote` shows every bot you own and which of
3777
+ them are set up here, and trying to create a bot you already own now says so
3778
+ and points at adopting it instead. Bots made before this shipped come back on
3779
+ sensible defaults, and HQ tells you it did that.
3780
+
3781
+ ### Fixed
3782
+
3783
+ - `hq bot restore` no longer brings back a bot this Mac cannot run. A company
3784
+ bot — one that acts for a company rather than as you — was being set up here
3785
+ as a personal bot: it got credentials, a folder, a memory folder and a startup
3786
+ entry, was counted as restored with nothing reported as failed, and then died
3787
+ at every start and at every login, while the Mac offered "check that Claude
3788
+ Code is signed in" as the remedy, which could never help. Restore, `hq bot
3789
+ adopt` and `hq bot list --remote` now ask exactly the question the bot's own
3790
+ startup asks, before anything is written or any password is rotated. A bot
3791
+ that cannot run here is listed plainly, counted as skipped rather than
3792
+ restored, and refused by adopt with one sentence saying where it does run —
3793
+ and nothing is left behind on this computer.
3794
+ - Bringing a bot back no longer leaves a second copy of it. A bot you created
3795
+ here as `qa-x` is `qa-x-<your suffix>` in HQ, and bringing it back built a
3796
+ whole second folder under that longer name: a second startup entry, a second
3797
+ memory folder, and the original folder left behind holding the live password
3798
+ of a bot nothing could reach any more. HQ now recognises the folder a bot
3799
+ already has on this computer — by the identity inside it, even when a wipe
3800
+ left only its credentials — and repairs that one in place. A bot that is not
3801
+ here at all comes back under the name you created it with. If that name
3802
+ already belongs to a different bot, both are kept, under names that tell them
3803
+ apart.
3804
+ - `hq bot list --remote --json` now says `ok: true` when it worked. Every
3805
+ failure said `ok: false`, and the success document had no `ok` at all, so
3806
+ anything that learned to check it read a good listing as a failure.
3807
+ - A bot's long answer now reaches you, in several messages. HQ Cloud refuses any
3808
+ single message over 4000 characters, and nothing split one up: an answer over
3809
+ that length was refused, saved, and sent again unchanged on every check — a
3810
+ test machine recorded the same rejection 231 times in eight minutes while the
3811
+ person saw no reply and no error at all, and the bot's 44 seconds of work was
3812
+ thrown away. A reply that is too long is now cut into numbered parts — on
3813
+ paragraph breaks where it can, on sentences otherwise, and never leaving a
3814
+ block of code half-open — and posted in order. If something goes wrong partway
3815
+ through, only the parts you have not seen are sent again. And if a message
3816
+ truly cannot be delivered, the bot stops after five tries and tells you so in
3817
+ one short line, instead of asking the server to do the impossible for as long
3818
+ as it runs.
3819
+ - A bot's startup entry no longer outlives the bot. When a bot's local setup was
3820
+ gone, the startup entry macOS keeps for it relaunched it every five seconds,
3821
+ forever, filling its log with the same failure (one test machine recorded 267
3822
+ of them in a row). HQ now says once what happened, tells you how to bring the
3823
+ bot back, removes the startup entry it no longer needs, and stops cleanly so
3824
+ nothing relaunches it. This works when macOS itself is the one running the
3825
+ bot, which is the case that matters: the first version did its tidying in an
3826
+ order that had macOS shut the bot down before it could finish, so the startup
3827
+ entry survived and brought the same dead bot back at every login, and the
3828
+ explanation never reached the bot's log. HQ now writes the explanation and
3829
+ removes the entry first, and lets go of itself last.
3830
+
3831
+ - You can remove a bot whose settings this computer has already lost. A wiped
3832
+ HQ folder could leave a bot half-here — a folder and a startup entry, no
3833
+ settings — and nothing could clear it: removing it said there was no such
3834
+ bot and suggested creating one, and creating one said you already had it.
3835
+ `hq bot rm <name>` now clears whatever is actually left on this computer, and
3836
+ `hq bot rm <name> --remote` also removes the bot HQ still holds under that
3837
+ name. It checks with HQ before it deletes anything local, so a service that
3838
+ cannot answer leaves nothing half-done.
3839
+
3840
+ - Removing a bot now tells the truth when HQ only gets part of the way. When
3841
+ HQ's own teardown of a bot's cloud identity stopped half-way, the
3842
+ machine-readable form said the removal had failed but gave no reason and no
3843
+ explanation, reported success to anything checking the exit code, and printed
3844
+ the raw cloud error — including internal infrastructure addresses — straight
3845
+ at you. It now says one plain sentence, names the reason in the same
3846
+ vocabulary as everything else, and exits non-zero, and no internal detail is
3847
+ repeated anywhere. It also stops making you run the command twice for
3848
+ nothing: when the part HQ could not finish would fail the same way every
3849
+ time, the bot is removed from this computer and you are told the leftover is
3850
+ HQ's to clear; when it is something HQ may yet finish, your settings are kept
3851
+ exactly as they were so running the same command again picks the job back up.
3852
+
3853
+ - Bringing bots back now fails in plain language when HQ Cloud is too old for
3854
+ it. `hq bot adopt`, `hq bot restore`, and `hq bot list --remote` all ask HQ
3855
+ which bots you own; against an HQ Cloud without that capability, the raw
3856
+ network error was printed at you, and the machine-readable form printed
3857
+ nothing at all — so the desktop app had nothing it could read. Each now says
3858
+ one plain sentence, and `--json` always returns a result naming the reason,
3859
+ so the app can quietly fall back to showing the bots that are on this
3860
+ computer.
3861
+
3862
+ ## [5.116.0] — 2026-09-16
3863
+
3864
+ ### Added
3865
+
3866
+ - External bots as team members (host side). `hq agent enroll <code>`
3867
+ redeems a one-time enrollment code from the console: it generates an
3868
+ Ed25519 host key at `~/.hq-agent/host-key` (0600), POSTs the public half to
3869
+ `POST /v1/agents/enroll`, and writes `~/.hq-agent/machine-creds.json` (0600)
3870
+ with `runtime: "external"`. It refuses to run on a host that already holds a
3871
+ human session file or another machine identity unless `--replace`, and
3872
+ never reads `~/.hq/cognito-tokens.json`. Every contract error (expired,
3873
+ already redeemed, invalid, revoked, plan-gated, throttled, unreachable) maps
3874
+ to a message that names the fix.
3875
+ - `hq agent kit install|status|uninstall|run <service>`: user-level services
3876
+ (LaunchAgent on macOS, systemd `--user` on Linux) for the company-vault sync
3877
+ loop, a work-mesh doorbell listener (ids-only MQTT → REST refetch into
3878
+ `~/.hq/work-mesh/cache`), an inbox poller that mirrors new items to
3879
+ `~/.hq-agent/inbox/` (server ack opt-in via `--inbox-ack`), and a 60 s
3880
+ heartbeat posting `{ components: { sync, mesh, inbox } }`. Each unit just
3881
+ runs `hq agent kit run <service>`; logs land in `~/.hq-agent/logs/`. The
3882
+ install also ships `~/.hq-agent/skills/{dm,search,files,secrets-exec,work-mesh-status}/SKILL.md`
3883
+ (agentskills.io format). `docker/hq-agent-kit/` runs the same four
3884
+ processes from a mounted creds volume.
3885
+ - `hq agent probe`: whoami → vault sync → mesh presence → DM round trip to
3886
+ self → secrets list, one PASS/FAIL line each, non-zero exit on any failure,
3887
+ a final `heartbeat <age>` line (the recipe format), and the result POSTed to
3888
+ `POST /v1/agents/{uid}/probe-result` so the console flips to Enrolled.
3889
+ - `hq agent mcp`: a stdio MCP server (no SDK dependency; initialize / ping /
3890
+ tools/list / tools/call) backed by the enrolled machine identity, exposing
3891
+ `hq_whoami`, `hq_search`, `hq_files_list`, `hq_files_read`,
3892
+ `hq_secrets_list`, `hq_secrets_exec` (exit code + output only, never
3893
+ values), `hq_dm_send`, `hq_inbox_read`, `hq_work_mesh_status`. Console
3894
+ recipes register it as `command: hq, args: [agent, mcp]`.
3895
+ - `hq agents rotate <uid>` (fresh enrollment code, shown once) and
3896
+ `hq agents revoke <uid> [--remove] --yes` for external agents. Both fail
3897
+ closed under `HQ_API_KEY` (JWT-only routes).
3898
+
3899
+ ### Changed
3900
+
3901
+ - `@indigoai-us/hq-cloud` pinned to `~6.16.48`, whose machine mint signs the
3902
+ server's nonce with the host key when creds carry `runtime: "external"`.
3903
+
3904
+ ### Fixed
3905
+
3906
+ - When a new agent needs an owner action, `hq agents provision` prints the
3907
+ current Codex sign-in code or a link to finish setting up the Slack app. `hq agents status
3908
+ <slug>` gets the current action again. The `--json` output adds a
3909
+ `pendingActions` array, plus `slackInstallPending` and `slackInstallUrl` for
3910
+ Slack installs.
3911
+
3912
+ - `hq secrets` now fails promptly instead of waiting for a browser sign-in
3913
+ that cannot be completed when stdin or stderr is not a terminal, or in CI.
3914
+ Run `hq login` from an interactive shell first if no valid session exists.
3915
+
3916
+ - hq gives both visible and quiet version-gated updates 30 minutes to finish.
3917
+ When that limit expires, it tries to terminate the updater's process group
3918
+ on POSIX or process tree on Windows. If the operating system denies that
3919
+ request, hq reports it instead of waiting forever. Set `HQ_UPDATE_TIMEOUT_MS`
3920
+ to another whole number of milliseconds up to 2,147,483,647. hq ignores an
3921
+ invalid value and tells you it is using the 30-minute limit.
3922
+
3923
+ - HQ's housekeeping pass now clears out add-on shortcuts that lead nowhere,
3924
+ instead of warning about them forever. A pack that stops shipping one of its
3925
+ files, or a pack whose folder was installed from a scratch directory someone
3926
+ later deleted, used to leave shortcuts behind that nothing would ever remove.
3927
+ HQ now clears a shortcut only when it sits in a folder the add-on system
3928
+ manages, only when it points into the add-on folder, and only when the thing
3929
+ it points at is definitely not there. A shortcut it cannot check, one leading
3930
+ somewhere else, or a real folder with real files in it are all left alone. On
3931
+ one real setup this cleared eight dead shortcuts that had been warning on
3932
+ every run.
3933
+
3934
+ - Add-on packs now repair their own shortcuts after your HQ folder moves to a
3935
+ new machine. Those shortcuts point at a full path, so on a new computer they
3936
+ all point somewhere that does not exist, and HQ used to leave them alone on
3937
+ the grounds that something was already there. That made the breakage
3938
+ permanent: every later tidy-up skipped them for the same reason. HQ now
3939
+ repoints a shortcut that leads nowhere, while still refusing to touch one
3940
+ that leads to real content. Repairing a tree this way fixed a batch of
3941
+ long-broken pack shortcuts in one pass.
3942
+
3943
+ ## [5.115.6] — 2026-09-16
3944
+
3945
+ ### Fixed
3946
+
3947
+ - `hq doctor --fix` can now refresh a company sync journal that is stale or
3948
+ has never synced, when that company still has a folder under `companies/`.
3949
+ It pulls that company only, keeps your local copy if there is a conflict,
3950
+ and does not push. Company journals left over from memberships you do not
3951
+ keep locally are reported as unused rather than broken, so a session-start
3952
+ health check no longer files "could not repair" reports for folders that
3953
+ were never on this machine. Personal journals are unchanged: they still
3954
+ warn when stale, and `--fix` will not pull your personal vault on its own.
3955
+ The repair pass also skips the integrations inventory, which it cannot
3956
+ repair, so a slow connection check cannot stall the fix.
3957
+
3958
+ ## [5.115.5] — 2026-09-15
3959
+
3960
+ ### Fixed
3961
+
3962
+ - The setting that turns the end-of-turn checkpoint requirement off,
3963
+ `HQ_CHECKPOINT_GATE`, now works from `.claude/settings.json` on every runtime.
3964
+ Before, only Claude Code passed that setting through to the checkpoint hook,
3965
+ so if you work in Codex or Grok, writing it in the settings file did nothing
3966
+ and there was no sign of why. hq now reads the file itself. As with the other
3967
+ checkpoint settings, `settings.local.json` overrides it, anything you set in
3968
+ your terminal overrides both, and `false` or `0` written as plain JSON works
3969
+ as well as `"0"`. If the value is something the setting does not understand,
3970
+ hq names it and leaves the requirement on rather than guessing.
3971
+
3972
+ ## [5.115.4] — 2026-09-15
3973
+
3974
+ ### Changed
3975
+ - Search indexing now leaves qmd embeddings for a later pass when CPU or memory
3976
+ use reaches 50%, while still updating the index. Set
3977
+ `HQ_INDEX_MAX_LOAD_PERCENT` to another percentage, or to `0` or `off` to
3978
+ disable this check. After 12 skipped passes or six hours, hq runs an embed
3979
+ despite the load so search results do not fall behind forever.
3980
+ - HQ's housekeeping pass (`hq reindex`, which runs after an agent finishes a
3981
+ turn) is much faster on large setups. On a root with 21 companies it took
3982
+ about two and a half minutes even with nothing to do. Two things were to
3983
+ blame. The scan that finds your workers read every folder inside any source
3984
+ code you keep under a company, `node_modules` and `.git` included, which on
3985
+ that root meant reading 83,950 folders to find 126 worker files. It now skips
3986
+ those folders instead of walking them, and takes 0.4 seconds instead of 22.
3987
+ Separately, the hook health check ran every `hq doctor` check in order to
3988
+ read six of them; it now asks only for the group those six live in.
3989
+ - `hq doctor` takes `--only <families>`, so you can run one group of checks
3990
+ instead of all of them: `hq doctor --only hooks`. A name it does not
3991
+ recognise is refused rather than quietly checking nothing, and `--json`
3992
+ records which groups ran, so a partial result cannot be read as a verdict on
3993
+ the whole tree.
3994
+
3995
+ ### Fixed
3996
+
3997
+ - When Claude Code's saved login has stopped working, a local bot now says it needs a sign-in and keeps your message for when it works again. Before, the bot relayed Claude Code's own "Failed to authenticate" notice as if it were the model's answer, so HQ never showed the "Sign in again" button.
3998
+
3999
+ ### Added
4000
+
4001
+ - You can now switch off the background helper that tidies HQ after a
4002
+ checkpoint, without giving up checkpoints themselves. Add
4003
+ `"env": { "HQ_CHECKPOINT_AGENT": "0" }` to `.claude/settings.json` in your HQ
4004
+ folder and the helper stops running; your checkpoint notes are still saved.
4005
+ Set it back to `"1"` to turn it on again. It works the same whether you use
4006
+ Claude Code, Codex or Grok, and `settings.local.json` overrides it if you
4007
+ keep one. If the value is something the setting does not understand, hq says
4008
+ so rather than quietly leaving the helper on.
4009
+
4010
+ ## [5.115.3] — 2026-09-15
4011
+
4012
+ ### Changed
4013
+
4014
+ - The background helper that tidies HQ after a checkpoint now runs on cheaper
4015
+ settings: Claude Sonnet 5 instead of Opus 5, Grok 4.6 instead of 4.5, and a
4016
+ medium thinking effort on every engine (Codex and Grok were on high). It does
4017
+ the same work; it just costs less while doing it.
4018
+
4019
+ ## [5.115.2] — 2026-09-15
4020
+
4021
+ ### Fixed
4022
+
4023
+ - Search indexing no longer starts a second embedding rebuild when one is
4024
+ already running. Two rebuilds could use much of a machine while writing to
4025
+ the same local index, so hq now skips the duplicate and lets a later pass
4026
+ finish any remaining work.
4027
+ - Creating a company from the command line (`hq onboard create-company`), and from a bot's conversation, works again; it had been refused with "ownerUid must match the authenticated caller". A company you already created but never finished setting up is now picked up and completed instead of being refused as "already taken".
4028
+
4029
+ ## [5.115.1] — 2026-09-15
4030
+
4031
+ ### Fixed
4032
+
4033
+ - `hq bot create --kind company` now sends the bot's companies with the create, as the cloud requires, so a company bot can actually be created; the cloud makes it a member of each company, and a company you are not an owner or admin of is refused before anything is created.
4034
+
4035
+ ## [5.115.0] — 2026-09-15
4036
+
4037
+ ### Added
4038
+
4039
+ - Local bots now come in two kinds. A **personal bot** acts as you: everything
4040
+ it does — in your direct messages, in rooms, and on its first task — runs
4041
+ under your own account, so it reaches every company and file you can and
4042
+ can create companies, bots, invites and shares for you. A **company bot**
4043
+ acts as itself, like a cloud agent: it is a member of one or more companies
4044
+ and reaches only those companies' files, memory and secrets; it never acts
4045
+ as you and says so if asked to create something for you, suggesting you ask
4046
+ a personal bot instead. `hq bot create <name> --kind personal|company
4047
+ --company <slug>` (repeat `--company` for several) picks the kind; a
4048
+ company bot is invited into each company as you create it, and the command
4049
+ tells you exactly which invite did not go through. `hq bot companies
4050
+ <name> --add/--remove <slug>` changes a company bot's memberships later.
4051
+ `hq bot list --json` and `hq bot status` show each bot's kind and
4052
+ companies, and every bot's instructions say which kind it is. Bots created
4053
+ before this release keep working, as personal bots (including one created
4054
+ from a company worker, and the setup bot). Removing a company bot with
4055
+ `hq bot rm` also takes it out of its companies.
4056
+ - A personal bot now runs `hq` commands as you in rooms too, not only in your
4057
+ direct messages (before, its room turns used the bot's own identity).
4058
+
4059
+ ### Fixed
4060
+
4061
+ - When a local bot's coding tool (Claude Code, Codex or Grok) has lost its
4062
+ sign-in, the bot no longer answers every message with "Failed to
4063
+ authenticate". It says once that the tool needs you to sign in again, keeps
4064
+ your message, and answers it on its own as soon as the sign-in works (right
4065
+ away after `hq bot restart`). A setup bot's first step waits the same way.
4066
+ `hq bot list --json` reports `runtimeSignIn` while this is the case.
4067
+ - In your direct messages, a local bot now does what you ask under your own
4068
+ account: creating a company, a bot, an invite or a share works directly,
4069
+ instead of the bot explaining that the cloud refuses to let it act in your
4070
+ name and asking you to run a command in a terminal. In rooms, bots still act
4071
+ as themselves. A company you create this way now also adds that bot as a
4072
+ member, so it can keep helping inside the new company.
4073
+
4074
+ ## [5.114.0] — 2026-09-15
4075
+
4076
+ ### Changed
4077
+
4078
+ - Local bots now work on two conversations at once. A question in one
4079
+ channel no longer waits for the bot to finish answering in another; messages
4080
+ in the same conversation (your DMs with the bot, or one channel) are still
4081
+ answered in order. A restart or stop during two turns reports each one that
4082
+ did not finish.
4083
+
4084
+ ### Fixed
4085
+
4086
+ - The log bundle attached to `hq feedback` reports is now a zip instead of a
4087
+ gzip. Slack refuses a gzip file from the HQ app at any size, so for several
4088
+ weeks every report's logs were uploaded and then silently dropped before
4089
+ anyone could read them. Nothing about what the bundle contains or how it is
4090
+ redacted has changed.
4091
+
4092
+ ## [5.113.1] — 2026-09-15
4093
+
4094
+ ### Fixed
4095
+
4096
+ - A bot can create a bot for its owner. `hq bot` commands (create, list, rm,
4097
+ promote) always act as the signed-in person, even when a bot runs them; they
4098
+ used the bot's own identity, which can own no bot, so the setup bot told
4099
+ people to open a terminal to create their first bot.
4100
+
4101
+ ## [5.113.0] — 2026-09-15
4102
+
4103
+ ### Added
4104
+
4105
+ - Search indexing now skips any file larger than 100 KB. HQ indexes every `.md`
4106
+ and `.json` file under your project folders, which pulled in things nobody
4107
+ searches as prose: browser trace dumps, perf captures, scraped datasets,
4108
+ lockfiles. A few of those were large enough that indexing ran out of time
4109
+ before it finished, so the search index never caught up. Set a different limit
4110
+ with `HQ_INDEX_MAX_DOC_BYTES`, or `indexMaxDocBytes` in your HQ root's
4111
+ `.hq/config.json`. Set it to `0` to index everything again.
4112
+
4113
+ ## [5.112.0] — 2026-09-15
4114
+
4115
+ ### Added
4116
+
4117
+ - `hq core sentry report`: lets HQ hooks send one bounded diagnostic event to
4118
+ Sentry through stdin. It is for hooks rather than everyday interactive use,
4119
+ accepts only approved simple fields, and has a `--dry-run` mode that shows
4120
+ the event it would send instead of sending it.
4121
+
4122
+ ### Fixed
4123
+
4124
+ - `hq` starts faster by loading only the command you run instead of every
4125
+ command, and by avoiding an observability hook that delayed startup. Help
4126
+ output and command behaviour are unchanged.
4127
+ - Commands no longer wait as long for a network endpoint that accepts a
4128
+ connection but does not answer. After a long-running command, hq still makes
4129
+ time for error reporting and its version-cache refresh.
4130
+ - CLI diagnostics now finish one release-health session with the correct final
4131
+ state when a CLI run finishes or fails normally, including `hq-auth-refresh`,
4132
+ instead of leaving a session open or competing sessions reporting the same
4133
+ run.
4134
+
4135
+ ## [5.111.2] — 2026-09-15
4136
+
4137
+ ## [5.111.1] — 2026-09-14
4138
+
4139
+ ### Fixed
4140
+
4141
+ - A new bot's first message no longer tells its signed-in owner they are not
4142
+ signed in. While the bot fetched its own sign-in, a check of the owner's
4143
+ sign-in in the same process could read the bot's credentials instead and find
4144
+ no account. Sign-in reads now wait for that to finish.
4145
+ - When a bot cannot read its owner's account right away, it tries again before
4146
+ answering, and never asks a signed-in owner to sign in or run a command. The
4147
+ bot's log now records why an owner check failed.
4148
+
4149
+ ## [5.111.0] — 2026-09-14
4150
+
4151
+ ### Added
4152
+
4153
+ - `hq skill delete <target>`: delete a company skill and all of its files for
4154
+ everyone. Accepts a `skl_…` id, a SKILL.md path, or a skill slug; names the
4155
+ skill and asks for confirmation (`--yes` skips it, and it refuses to run
4156
+ unattended without `--yes`). Synced copies are removed on the next sync.
4157
+ Requires access-admin rights on the skill.
4158
+
4159
+ ## [5.110.0] — 2026-09-14
4160
+
4161
+ ### Added
4162
+
4163
+ - `hq bot`: personal local bots that run on your own computer under your Claude
4164
+ Code, Codex, or Grok sign-in, with their own HQ identity and your permissions.
4165
+ `hq bot create|list|status|start|stop|restart|rm|workers|set|logs` manage them;
4166
+ each bot runs as a launchd agent, answers your DMs, can join group chats and
4167
+ company channels, and can start from a company worker (`--worker`).
4168
+ - The HQ setup bot: `hq bot create setup --worker setup` uses the setup worker
4169
+ bundled with the CLI, so a fresh install can be walked through setup before
4170
+ core workers have synced.
4171
+ - Bots post their in-between messages while they work, have no turn time limit
4172
+ (`HQ_BOT_TURN_TIMEOUT_MS` is opt-in), always reply, and never re-run a message
4173
+ that already started.
4174
+ - Per-bot model and thinking level (`hq bot set <name> --model --effort`),
4175
+ read fresh on every turn.
4176
+ - `hq bot promote`: move a local bot to the cloud as the same identity
4177
+ (requires the matching backend release).
4178
+
4179
+ ### Fixed
4180
+
4181
+ - Bots no longer tell their owner they belong to no company: owner DM turns
4182
+ carry the owner's companies, looked up with the owner's own sign-in, because
4183
+ `hq` lookups a bot runs describe the bot itself.
4184
+ - Stopping a bot's turn stops everything the model started, instead of waiting
4185
+ for a child process that still holds the output open.
4186
+
4187
+ ## [5.109.16] — 2026-09-14
4188
+
4189
+ ### Changed
4190
+
4191
+ - hq-cloud now uses 6.16.41, which reverts the phase-two resident journal change
4192
+ that caused sync runners to spin.
4193
+
4194
+ ## [5.109.15] — 2026-09-13
4195
+
4196
+ ### Changed
4197
+
4198
+ - hq-cli now bundles hq-cloud 6.16.39, reducing resident sync-journal memory
4199
+ through the packed row store.
4200
+
4201
+ ## [5.109.14] — 2026-09-13
4202
+
4203
+ ### Fixed
4204
+
4205
+ - Repeated "install tree was being rewritten" reports from a background reinstall
4206
+ now collapse into one stable issue per outcome instead of spawning a fresh crash
4207
+ report on every occurrence (Sentry HQ-CLI-21, HQ-CLI-22, HQ-CLI-23). hq already
4208
+ groups these by their recovery outcome, but the grouping key led with a
4209
+ placeholder that also told Sentry to fold in its own default grouping — and for
4210
+ this error that default is the underlying loader failure, whose details differ
4211
+ every time (which dependency file the reinstall happened to be rewriting, under
4212
+ each machine's install path). So each occurrence minted a new issue and the
4213
+ family never settled down. The key is now fully explicit and no longer inherits
4214
+ that default, so future occurrences with the same outcome share one group. The
4215
+ existing issues HQ-CLI-21/22/23 stay open as they are: a grouping change only
4216
+ affects events reported after it ships.
4217
+
4218
+ ## [5.109.13] — 2026-09-13
4219
+
4220
+ ### Fixed
4221
+
4222
+ - A background reinstall no longer turns into a crash report in the CommonJS twin
4223
+ of the shape 5.109.12 fixed for ES modules (HQ-CLI-20). When another program
4224
+ reinstalls hq globally while a command is starting, it rewrites hq's files one
4225
+ by one over a few seconds. If a bundled CommonJS dependency (here `ajv`, reached
4226
+ while `hq core timeout-guard` registers its commands) had just resolved one of
4227
+ its own files and that file vanished before Node read it, the low-level `ENOENT …
4228
+ open` came from inside Node's CommonJS module loader — a shape the recovery only
4229
+ recognized for ES modules, so it was still filed as a crash. It is now recognized
4230
+ as "your install was mid-update, not an hq bug": the command waits for the
4231
+ reinstall to settle and re-runs once on the healed tree, and the same noise is
4232
+ dropped on the routes that bypass the top-level handler. The gate is deliberately
4233
+ narrow — it fires only when Node's own loader was reading a module's source (the
4234
+ frame directly beneath the file read is a `cjs/loader` frame, never the
4235
+ dependency's own code) — so a third-party package whose own startup code reads a
4236
+ missing file, or a fault in hq's own shipped files, still reports exactly once
4237
+ (Sentry HQ-CLI-20).
4238
+
4239
+ ## [5.109.12] — 2026-09-12
4240
+
4241
+ ### Fixed
4242
+
4243
+ - A background reinstall no longer turns into a crash report in two more shapes
4244
+ it was still slipping through (HQ-CLI-1S, HQ-CLI-1T). When another program
4245
+ reinstalls hq globally while a command is starting, it renames hq's files aside
4246
+ and rewrites them file by file over a few seconds. Two failure shapes from that
4247
+ window were still filed as crashes instead of being recovered: (1) a file that
4248
+ Node checked a moment earlier vanished between its two resolve steps, surfacing
4249
+ as a low-level `ENOENT … lstat` from inside the module resolver (HQ-CLI-1S);
4250
+ and (2) a dependency file that was found but only half-written, so loading it
4251
+ returned an empty module and its own code threw `TypeError: … is not a
4252
+ function` (HQ-CLI-1T). Both are now recognized as "your install was mid-update,
4253
+ not an hq bug": the command waits for the reinstall to settle and re-runs once
4254
+ on the healed tree instead of reporting an error. The half-written-file case
4255
+ only ever waits when a reinstall is actually in progress — a genuine, lasting
4256
+ defect in a third-party dependency still reports exactly once and never pays a
4257
+ wait, and a fault in hq's own shipped files is still reported. (The two related
4258
+ shapes HQ-CLI-1V and HQ-CLI-1W are already covered by 5.109.8 and #561.)
4259
+
4260
+ ## [5.109.11] — 2026-09-12
4261
+
4262
+ ### Fixed
4263
+
4264
+ - A torn-install recovery no longer gives up after 90 seconds while another hq
4265
+ updater is still legitimately installing hq-cli. When a command starts just as
4266
+ the desktop app (or the box's `hq-cli-update` timer, or another `hq`) is
4267
+ rewriting the install, the recovery waits for that writer to finish — bounded by
4268
+ the shared install lock's own 10-minute staleness window rather than the 90-second
4269
+ settle deadline — and then re-runs once on the healed tree, so the common case
4270
+ (an install that finishes within the window) no longer fails at all. A short
4271
+ second line explains the pause while it waits. If a writer holds the lock past
4272
+ that ceiling, the command still fails once, but with a "let the update finish,
4273
+ then re-run — do not reinstall while it is running" remedy and a distinct
4274
+ `lock-held` outcome, instead of advice to reinstall over a live installer
4275
+ (Sentry HQ-CLI-1Y, HQ-CLI-23). The ceiling is overridable with
4276
+ `HQ_INSTALL_SETTLE_LOCK_TIMEOUT_MS`.
4277
+
4278
+ ## [5.109.10] — 2026-09-12
4279
+
4280
+ ### Fixed
4281
+
4282
+ - A global reinstall that tears the install tree out mid-startup now recovers
4283
+ even when the module that vanished is a RELATIVE sibling (for example
4284
+ `@babel/runtime`'s `./typeof.js`, reached through the mqtt → worker-timers
4285
+ chain). The torn-install classifier reduced a relative CJS specifier to the
4286
+ package name `.`, producing a readiness probe that could never turn true — so
4287
+ an affected command burned the entire 90-second settle budget, never re-ran on
4288
+ the settled tree, and reported an error instead of recovering. Relative
4289
+ specifiers are now re-resolved the way Node's CJS resolver does — from the
4290
+ importer's directory, trying the file, its `.js`/`.json`/`.node` forms, and the
4291
+ directory forms — so the command waits only as long as the reinstall actually
4292
+ takes and then re-execs once on the healed tree. A genuinely missing sibling
4293
+ still surfaces exactly one error naming the resolved path (Sentry HQ-CLI-1R).
4294
+
4295
+ ## [5.109.8] — 2026-09-11
4296
+
4297
+ ### Fixed
4298
+
4299
+ - A background reinstall no longer turns into a crash report (HQ-CLI-1M,
4300
+ HQ-CLI-1N). When another program reinstalls hq globally while a command is
4301
+ running — the box's own update timer, the desktop app, or a second `hq` — it
4302
+ renames hq's files aside and rewrites them file by file over a few seconds, and
4303
+ a command already running can try to load a file that vanished in that window.
4304
+ hq already knew to treat that as "your install was mid-update, not an hq bug"
4305
+ and print a re-run/reinstall note instead of a crash, but it could only do so
4306
+ while it could still find its own install directory on disk — which, in this
4307
+ exact situation, it usually could not, because that directory is what just got
4308
+ renamed away. That one blind spot silenced the recovery for two different crash
4309
+ shapes: the ESM-loader `ENOENT` seen in production (HQ-CLI-1M) and a lazy
4310
+ CommonJS `require('./sibling')` from a bundled dependency that resolves after
4311
+ the tear (HQ-CLI-1N). hq now locates its own directory without reading the
4312
+ disk, so the mid-update case is recognized for both: a registration-time tear
4313
+ waits for the install to settle and re-runs once, and a tear anywhere else
4314
+ prints the reinstall note. A genuine packaging fault in hq's own shipped files
4315
+ (a miss under the install's own `dist/` or `assets/`) is still reported.
4316
+
4317
+ ## [5.109.7] — 2026-09-10
4318
+
4319
+ ### Fixed
4320
+
4321
+ - Add `whoami --json`, structured `files acl --json` with explicit absence,
4322
+ and `people resolve --membership-only` with canonical company/person IDs.
4323
+ Delegation helpers can now verify exact grants without parsing display tables
4324
+ or treating a missing ACL as a transport failure. Existing human output stays available.
6
4325
 
7
4326
  ## [5.109.6] — 2026-09-10
8
4327