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