Agents: migrate boss / dev / reviewer to container mode + give them their plugin sets #76
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#76
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
User story
As the operator, I want all five agents (
boss,dev,reviewer,designer,design-reviewer) to run in container mode with their ownper-agent Claude Code plugin set — so that the code-editing agents
have
typescript-lspandsecurity-guidancein their toolkit, thereviewer has
pr-review-toolkitalongside those, and the architecturestays uniform across the pool rather than splitting "design-side
container-mode" and "code-side host-mode".
Current state (2026-04-19)
designer+design-reviewer— container mode ✅ (PR #67),per-agent plugin dirs ✅ (PR #75).
boss+dev+reviewer— still host mode. Theirclaude-hooks-<agent>containers exist (created during #67'ssweep) but
agents.jsonentries have nocontainer.enabled: true,so the service dispatches them via the host path in
agent-runner.ts. They share the single~/.config/claude-hooks/claude-env/isolated config dir and pickup no plugins.
Container mode has been running for the two design agents for ~24
hours without dispatches flagging any container-specific bugs in the
paths they exercise (
design-implement,design-review). Whathasn't been exercised yet is the code-agent flows —
implement/review/rebase/merge/fix-ci— undercontainer mode. Those are the paths this ticket validates.
Acceptance criteria
Config (
config/agents.json)boss,dev,reviewereach get:-
container.enabled: true-
container.credentials_host_dir: "~/.config/claude-hooks/agent-env/<agent>"- a
plugins: [...]list.#75):
-
boss:security-guidance,typescript-lsp,claude-md-management.-
dev:security-guidance,typescript-lsp.-
reviewer:security-guidance,typescript-lsp,pr-review-toolkit.Operator setup
just agent-env-syncpopulates the three new per-agent dirs(credentials +
.claude.json). Idempotent.just agent-plugins-installinstalls each agent's plugin listinto its own dir. Idempotent.
just containers-rebuild boss dev reviewerrecreates the threecontainers with the new bind sources.
Validation — one dispatch per agent
Before marking the ticket closed, exercise each code-flow path under
container mode at least once to verify no regression. Easiest
route: one trivial real dispatch per agent on a safe ticket.
dev— dispatch a trivialimplementtask (e.g. assign aone-line docs-typo issue to
dev) and confirm the PR openssuccessfully. Checks: worktree in container, git identity /
auth via
docker exec, forgejo-mcp tool calls from inside thecontainer, push through the shim.
reviewer— let thedevPR above trigger a review-request.Confirms the
reviewskill runs under container mode and thereview comment posts.
boss— approve the PR (or triggermerge.mdsome other way).Confirms merge-commit creation + GPG signing under container
mode.
scripts/smoke-creds.sh boss dev reviewerreturns allprobes green including plugin presence.
Rollback plan
If any container-mode path breaks on the three code agents, revert
the
agents.jsonentries (dropcontainer.enabled) — theyimmediately fall back to host mode. The per-agent dirs and installed
plugins remain on disk, harmless, ready for the next attempt.
Out of scope
are the minimal defaults. Adding others (e.g.
hookify,skill-creator) is a separate decision per instance later.remaining scope — dashboard CRUD for instance-level overrides
on top of type-level defaults. This ticket only touches the
type-level defaults in
agents.json.agent-runner.tskeeps the hostcode path for any agent that doesn't opt into container mode. Not
removing the branch in this PR.
References
design-reviewer only).
(the template this ticket follows).
(longer-horizon).
Dependencies
agent-env-sync/agent-plugins-installrecipes land there; this ticket uses them.
Nothing else depends on it.
mainafter #75 merges (or fold into #75's branchif extending that PR — see the note at the top).
Note on scope folding
This ticket exists to track the migration as a distinct piece of
work. The actual change may land inside PR #75 itself (operator
decision) — if so, this ticket closes on the same merge and the
validation dispatches above become the PR's final test-plan items.
container.credentials_host_pathbackwards-compat in favor ofcredentials_host_dir#77container.credentials_host_pathcompat branch #78/cancelendpoint: accept anagentparam instead of cancelling the first busy worker #87Validation ACs are satisfied organically — without needing dedicated smoke dispatches:
pr-review-toolkit+typescript-lsp+security-guidance) post-PR #98's plugin-load fix.plugin list).Closing as met. Any future container-mode regressions surface via the smoke probe or live dispatches.