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, warn on drift without trapping recovery, 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 recovery needs a way to inject warnings before stale tool calls continue.
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
  • extension-contributed language model tools
  • local goalctl command fallback
  • SessionStart and UserPromptSubmit hooks
  • PreToolUse and PostToolUse hooks
  • PreCompact hook
  • Stop hook
  • SubagentStart and SubagentStop hooks
  • profile-level hook 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 direct tools, hooks, and stable subagent metadata, the state machine can be reused. If it only supports prompts, the system becomes guidance rather than enforcement.