feat(cockpit): action tier executes via a governed operator — auto-router Phase 3 (v0.282.0) - #497
Merged
Merged
Conversation
…uter Phase 3 (v0.282.0)
A detected action ("create a task to X", "run the churn report every morning")
no longer just deep-links. Clicking "Set it up" spawns the operator — an
ephemeral System agent (sibling to the read-only concierge), run-as the member —
that carries out the request via GOVERNED tools and nothing else:
- task_create (filed immediately, audited) for a task
- automation_propose (a DRAFT an owner must approve — never fires unattended)
for a scheduled/triggered job
Cockpit polls its transcript and shows the one-line confirmation inline, with a
link to Tasks / the Inbox. Explicit consent by design: nothing executes until
"Set it up" is clicked; the operator can't bypass the gate hook and an
automation still needs a human approval — so no ungoverned power is added. The
card keeps "Open Automations/Tasks" and "Route to an agent" as alternatives.
New POST /api/router/act; operator is category:'System' so it's never a route
target. Shared System-agent provisioner in concierge.ts.
Verified: typecheck + web build clean; test:governance 130/130; operator
provisions (category System, claude-code) and neither operator nor concierge
leaks into routing across 6 probes. Live smoke test of a real task creation to
follow on deploy.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
actiontier no longer just deep-links — it can carry the action out, via the same concierge pattern, kept fully governed.Flow
A detected action ("create a task to migrate the acme site", "run the churn report every morning") shows a card with Set it up · Open Automations/Tasks · Route to an agent. Clicking Set it up →
POST /api/router/act→ spawns the operator: an ephemeral System agent (sibling to the read-only concierge), run-as the member, that does the request via governed tools and nothing else:task_createautomation_proposeCockpit polls the operator's transcript and renders its one-line confirmation inline ("✓ Created task: …" / "✓ Proposed automation … — pending an owner's approval"), with a link to Tasks / the Inbox.
Why this is safe
task_create, and an automation still requires a human approval (automation_propose→ owner). The operator persona is scoped to only these two tools, do-only-what-was-asked.category:'System'→ the operator is never a route target (verified no leak).Files
src/edge/concierge.ts—ensureOperator/OPERATOR_ID+ a shared System-agent provisioner (concierge + operator)src/server.ts—POST /api/router/actweb/src/App.tsx— action card "Set it up" + unified run-polling (ask concierge / action operator)web/src/lib/api.ts—routerActVerification
typecheck+web buildclean;test:governance→ 130/130 ✓Note
First execution carries claude cold-start latency (shown as "Setting it up…"). The operator run appears as a chat session in the member's list (same follow-up as the concierge — could hide System-agent chats).
🤖 Generated with Claude Code