Host conformance matrix#

Generated from conformance/host-conformance.json. Do not edit by hand. adapter-contract rows prove Conduit's projection contract only; runtime selection requires host-bound evidence generated by the consuming host.

Each lifecycle cell is event / decision / context fidelity.

Adapter Adapter version Evidence scope Host Host version Session start Before model Before tool After tool Stop Probe Limitations
claude-code 0.7.1 adapter-contract unbound unbound native / unavailable / native approximated / unavailable / native native / native / native native / unavailable / unavailable native / native / unavailable pass before-model is projected through prompt submission hooks; capability.influence.after-tool.contextInjection=unavailable; capability.influence.after-tool.decision=unavailable; capability.influence.before-model.decision=unavailable; capability.influence.session-start.decision=unavailable; capability.influence.stop.contextInjection=unavailable; capability.install.context=static-only; capability.lifecycle.before-model=approximated; context assets are static instructions; host extension surfaces are not exercised by this reference row
codex 0.7.1 adapter-contract unbound unbound unavailable / unavailable / unavailable unavailable / unavailable / unavailable native / native / native unavailable / unavailable / unavailable observational / unavailable / unavailable pass before-tool influence requires a trusted Codex hook definition; capability.influence.after-tool.contextInjection=unavailable; capability.influence.after-tool.decision=unavailable; capability.influence.before-model.contextInjection=unavailable; capability.influence.before-model.decision=unavailable; capability.influence.session-start.contextInjection=unavailable; capability.influence.session-start.decision=unavailable; capability.influence.stop.contextInjection=unavailable; capability.influence.stop.decision=unavailable; capability.install.agent=unavailable; capability.install.command=unavailable; capability.install.context=static-only; capability.install.hook=approximated; capability.install.prompt=static-only; capability.lifecycle.after-tool=unavailable; capability.lifecycle.before-model=unavailable; capability.lifecycle.session-start=unavailable; capability.lifecycle.stop=observational; host extension surfaces are not exercised by this reference row; lifecycle observation requires host-owned notification binding
kiro 0.7.1 adapter-contract unbound unbound native / unavailable / native native / unavailable / native native / native / unavailable native / unavailable / unavailable native / native / unavailable pass Kiro CLI 2.13+ hook registration is supplied by the caller; blocking applies to pre-tool and stop hooks; capability.influence.after-tool.contextInjection=unavailable; capability.influence.after-tool.decision=unavailable; capability.influence.before-model.decision=unavailable; capability.influence.before-tool.contextInjection=unavailable; capability.influence.session-start.decision=unavailable; capability.influence.stop.contextInjection=unavailable; capability.install.command=unavailable; capability.install.context=static-only; command assets have no native Kiro CLI resource kind; context files are startup resources; host hook processes are not exercised by this reference row
opencode 0.7.1 adapter-contract unbound unbound native / native / native native / native / native native / native / native native / native / native approximated / native / native pass capability.lifecycle.stop=approximated; host extension surfaces are not exercised by this reference row; stop is derived from session lifecycle events
pi 0.7.1 adapter-contract unbound unbound native / unavailable / unavailable native / unavailable / native native / native / unavailable native / unavailable / unavailable native / unavailable / unavailable pass Pi 0.80.6+ extension registration is supplied by the caller; agent assets have no native Pi resource kind; capability.influence.after-tool.contextInjection=unavailable; capability.influence.after-tool.decision=unavailable; capability.influence.before-model.decision=unavailable; capability.influence.before-tool.contextInjection=unavailable; capability.influence.session-start.contextInjection=unavailable; capability.influence.session-start.decision=unavailable; capability.influence.stop.contextInjection=unavailable; capability.influence.stop.decision=unavailable; capability.install.agent=unavailable; capability.install.command=approximated; capability.install.context=static-only; commands require extension registration; context files are static instructions; host extension surfaces are not exercised by this reference row
strands 0.7.1 adapter-contract unbound unbound native / native / native native / native / native native / native / native native / native / native native / native / native pass capability.install.agent=approximated; capability.install.command=approximated; capability.install.skill=approximated; framework objects and hook registration are supplied by the caller; host extension surfaces are not exercised by this reference row
voltagent 0.7.1 adapter-contract unbound unbound native / native / native native / native / native native / native / native native / native / native native / native / native pass capability.install.command=approximated; capability.install.skill=approximated; framework objects and hook registration are supplied by the caller; host extension surfaces are not exercised by this reference row

Source: docs/host-conformance.md