ADR 0016: Copilot Adapter in v1.0

Field Value
Status Accepted
Date 2026-05-23
Deciders Project maintainers
Supersedes
Superseded by
Related ADRs ADR-0005 (adapter contract shape), ADR-0008 (prereq install policy)

Summary

@aidokit/adapter-copilot is added to v1.0 scope as a third first-party adapter targeting GitHub Copilot CLI at Minimum conformance. The original v1.0 ROADMAP scoped only claude-code and codex; Copilot is added during the same release window. Standard and Strict conformance remain out of reach until Copilot CLI exposes a hook mechanism; the gap is documented in the adapter manifest rather than papered over.


Context

The original v1.0 ROADMAP scoped Codex as the second first-party adapter. After Codex landed and multi-adapter project support shipped (commits 67f9f0503f661b), four factors made expanding scope cheap and valuable:

  1. The Adapter contract was just exercised by a second adapter, and the friction points were fresh in mind.
  2. Multi-adapter project support already landed. Three adapters surface design issues that two cannot — particularly around shared docs/ / agent-artifacts/ deduplication and per-adapter state reconstruction.
  3. Copilot CLI adoption is large enough that a v1.0 launch story of "supports Claude Code AND Codex AND Copilot" is materially stronger than "supports Claude Code AND Codex".
  4. Implementation effort was bounded: ~1 day, ~1000 LOC, by direct analogy to the Codex adapter (which mirrors adapter-claude-code but without hooks).

Copilot CLI's surface differs from Codex's in two ways material to aidokit:


Decision

1. Ship @aidokit/adapter-copilot in v1.0 at Minimum conformance

Mirror the @aidokit/adapter-codex package shape (no hook directory, inline templates, fs-only doctor) and adapt paths:

2. Declare gaps explicitly in manifest.gaps

Four gaps are documented at v1.0 ship:

  1. No hook mechanism — watchdog enforcement is prompt-level only.
  2. No output-style mechanism — Strict's AD-STR-02 unreachable.
  3. No native skill auto-discovery — .copilot/skills/<id>/SKILL.md files are referenced from the instructions file as documentation.
  4. Partial MCP support — installMCP / removeMCP / listInstalledMCPs are stubbed pending upstream stabilisation.

3. Path to Standard deferred

Standard conformance requires deterministic watchdog enforcement, which requires a runtime hook primitive Copilot CLI does not currently expose. This adapter will graduate to Standard in a v1.x patch once GitHub adds a suitable mechanism (or aidokit identifies an acceptable workaround such as instruction-side enforcement primitives).


Consequences

Positive

Negative

Neutral


Alternatives considered

Alternative 1: Defer Copilot adapter to v1.1

Ship v1.0 with claude-code + codex only; release Copilot in a follow-up.

Pros

Cons

Reason rejected: The implementation effort was bounded (~1 day), and the contract-validation value of a third adapter pre-GA is high.

Alternative 2: Ship Copilot at Standard with simulated watchdog

Emit instruction-side watchdog stop conditions and claim Standard conformance.

Pros

Cons

Reason rejected: Conformance levels exist to be honest about what ships. Declaring Standard while shipping prose enforcement undermines the contract for all adapters.

Alternative 3: Ship Copilot adapter as third-party / community

Leave Copilot to a community-maintained npm package outside the monorepo.

Pros

Cons

Reason rejected: First-party is faster and lets us own the gap declaration directly.


Implementation notes

The adapter mirrors @aidokit/adapter-codex structure exactly. Files that differ in substance (not just renames):

CLI wiring follows the established pattern:


Validation

This decision is validated when:


References

Internal