Skip to content

feat: implement v1 control enforcement CLI and terminal UI#9

Merged
chocks merged 9 commits intomainfrom
feat/v1-control-enforcement
Apr 13, 2026
Merged

feat: implement v1 control enforcement CLI and terminal UI#9
chocks merged 9 commits intomainfrom
feat/v1-control-enforcement

Conversation

@chocks
Copy link
Copy Markdown
Owner

@chocks chocks commented Apr 13, 2026

Summary

  • implement attach and detach commands for Claude Code and Codex with ~/.agentctl/ bootstrap
  • add doctor health checks for global policy, trace and approval stores, and per-agent status
  • add the Bubble Tea terminal UI for traces and pending approvals
  • rewrite docs for the global ~/.agentctl/policy.yaml model and delete the old repo-root policy file
  • bump the module and contributor guidance to Go 1.26.2

Testing

  • make build
  • make test
  • make lint
  • smoke test with HOME=/tmp/agentctl-smoke for attach claude-code, attach codex, gate, doctor, and ui

Notes

  • go.mod now carries the Bubble Tea dependency set for the new terminal UI
  • CI and release workflows already follow go.mod via actions/setup-go

chocks and others added 9 commits April 12, 2026 20:43
Dead code with zero consumers. Git history serves as archive.
Removes: server.go, ui.go, packages/, sdk/, examples/, api/,
codegen Makefile targets, package.json.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Injectable config with no mutable global state. DefaultPaths()
resolves ~/.agentctl/, NewPaths() for tests. LoadPolicy() returns
error on malformed YAML instead of silently falling back.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…cement

- Add Workspace field to RequestContext (populated from cwd)
- Evaluate write_file block_patterns against file paths
- Deny access_secret when TTL exceeds max_ttl
- Empty allowed_domains list now means deny-all (nil = no restriction)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace global path helpers and env var lookups with injected
config.Paths. Hook fails open on malformed policy. Stub commands
added for attach, detach, doctor, ui.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Integration test uses HOME=tempdir for subprocess isolation.
Policy loaded from ~/.agentctl/policy.yaml inside fake home.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Attach/detach/status for Claude Code PreToolUse hook.
Idempotent, preserves existing settings. Codex stubs included.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Attach/detach/status for Codex MCP server entry.
Reads and writes ~/.codex/config.toml, preserves existing config.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@chocks chocks marked this pull request as ready for review April 13, 2026 01:33
@chocks chocks merged commit 1905b48 into main Apr 13, 2026
1 check passed
@chocks chocks mentioned this pull request Apr 13, 2026
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant