This release is Copilot-first. The portable part is the pattern: keep a persisted Active Goal outside chat memory, inject compact reminders at lifecycle boundaries, deny drift, isolate subagents, and refuse completion without proof. The implementation is not automatically portable because every host exposes different hooks, tools, settings, and subagent metadata.

Required primitives

Any adapter needs these primitives:
PrimitiveWhy it matters
User-triggered skill or slash commandGoal mode must stay manual.
Local persistent tool stateGoal state must survive compaction and resume.
Custom toolsThe model needs explicit status, open, update, and close operations.
Pre-tool decision hookDrift blocking needs a way to deny stale tool calls.
Prompt/session hooksContinuation needs compact context injection.
Stop hookOpen goals need a way to block premature turn completion.
Subagent lifecycle metadataSubagents must be excluded from goal ownership.

GitHub Copilot CLI

Stable strict mode is supported by this project. Copilot provides the surfaces this implementation uses:
  • skills
  • SDK extension tools
  • prompt/session hooks
  • pre-tool and post-tool hooks
  • stop hooks
  • subagent hooks
  • local settings

VS Code Copilot Chat

Preview strict mode is supported by this project. VS Code provides the surfaces this implementation uses:
  • custom agents
  • MCP servers
  • SessionStart and UserPromptSubmit hooks
  • PreToolUse and PostToolUse hooks
  • PreCompact hook
  • Stop hook
  • SubagentStart and SubagentStop hooks
  • profile-level hook and MCP configuration
The adapter is preview because VS Code hooks and agent plugins are Preview surfaces and can be disabled by organization policy. UserPromptSubmit is part of the enforcement path. It persists draft goals on explicit activation and handles same-directory continuation before the session can drift into an untracked conversation.

Model-runtime wrappers

Not stable as a generic target. Model runtimes are not agent shells with standardized lifecycle hooks. A specific runtime-backed CLI can support this pattern only if that CLI exposes the required primitives.

Other terminal agents

Adapter needed. If the agent supports MCP tools, hooks, and stable subagent metadata, the state machine can be reused. If it only supports prompts, the system becomes guidance rather than enforcement.