SIGN IN SIGN UP

Load hooks per launch instead of installing them globally (#146)

Integrations that can load hooks for a single invocation now get them
only from `hcom <tool>`: Claude, Codex, Copilot, Pi, OMP, OpenCode and
Kilo. Cursor, Gemini, Kimi and Antigravity keep persistent hooks.
Running a tool without hcom is untouched, and child processes of the
same tool no longer inherit the parent's hcom hooks.

- Add a shared per-run pipeline: prepare the integration, remove legacy
  installs, sync permission state, inject args/env for the launch.
  Publish content-addressed artifacts under
  <HCOM_DIR>/integrations/<tool>/<digest>/, keep generated settings
  private, sweep idle digests, and remove the tree on full reset.
- Merge hcom hooks into the caller's config without clobbering it:
  Claude settings, exact Codex hook trust, Copilot plugin dirs, Pi/OMP
  extensions, OpenCode/Kilo config. Injected values stay out of
  persisted launch args; resume and fork strip replayed hcom values and
  rebuild the current integration.
- Migrate old installs conservatively: remove only hcom-owned entries,
  keep user hooks and Codex trust as handler positions shift, remove the
  legacy Codex notify callback, and warn instead of blocking the launch
  if cleanup fails.
- Treat direct Claude/Codex sessions that run `hcom start` as ad-hoc
  while keeping their native session identity; rebinds move the
  binding, and resume/fork recover the owning tool from the transcript.
- Show per-run vs persistent mode in hooks/status/help, and simplify
  list labels to TOOL, TOOL* (missing binding) and AD-HOC.
- Run OpenCode 2 through a private --standalone server so the per-run
  plugin always loads; reject --server, which would bypass it.
- Codex hooks/list preflight on Windows skips the codex.cmd shim.
A
Anno committed
67348936a34b51c977df4c027c0e35fc95a4330a
Parent: 5cff896
Committed by GitHub <noreply@github.com> on 9/28/2026, 11:34:31 PM