Compatibility
Versions
All product repositories are at 0.1.0-alpha.49.2. ecosystem.json in each repository declares policy: independent: a sibling repository is not required to use the same version, and each repository checks only its own version and its own vendor pins (npm run check:version).
| Item | Value | Source |
|---|---|---|
| Product version | 0.1.0-alpha.49.2 | package.json, ecosystem.json, plugin manifests |
| Marketplace entries | all 0.1.0-alpha.49.2 | .claude-plugin/marketplace.json |
| Node.js | >=20 | engines in package.json; MCPB compatibility.runtimes.node |
| MCPB platforms | darwin, win32, linux | MCPB manifest |
| Claude Code (required by the release candidate) | >=2.1.278 | requiredHostVersions in release-candidate/manifest.json |
| Claude Code used for verification | 2.1.314 (alpha.49.1, alpha.49.2); 2.1.304 (alpha.48, alpha.49) | release candidate manifest and acceptance runs |
Core and Runtime
Core is not installed separately. Runtime and each role repository vendor the Core packages they need as tarballs under vendor/, and record the Core revision in vendor/manifest.json:
| Repository | vendor/manifest.json version | Core baseline (commit) | Packages |
|---|---|---|---|
| praxis-runtime | 0.1.0-alpha.49.2 | 984d4f4058fbc0194def498bcb68bd0d852cbfba | contracts, project-config, knowledge, jira, vcs, cli |
| praxis-ba | 0.1.0-alpha.49.2 | 984d4f4058fbc0194def498bcb68bd0d852cbfba | plugin-sdk, knowledge, project-config, contracts |
| praxis-architect, praxis-developer | 0.1.0-alpha.49.2 | 984d4f4058fbc0194def498bcb68bd0d852cbfba | plugin-sdk, knowledge, project-config, contracts |
| praxis-quality | 0.1.0-alpha.49.2 | 984d4f4058fbc0194def498bcb68bd0d852cbfba | plugin-sdk, knowledge, project-config, contracts, jira |
The baseline is the praxis-core merge commit of the 0.1.0-alpha.49.2 release, tagged v0.1.0-alpha.49.2. package.json references the tarballs as file:vendor/praxis-...-0.1.0-alpha.49.2.tgz. check-ecosystem-version.mjs fails when a repository disagrees with its own version or vendor pins. The Runtime reports its own build identity in praxis_doctor (build.version, build.coreBaseline, build.sourceDigest, build.bundleSha256); a version string alone is not proof of which build is loaded.
Role plugins and Runtime are matched by version in the marketplace (all entries carry the same version). The role plugins call praxis_* tools by name; a Runtime with a different tool set shows up as a different build.tools.count and build.tools.digest. Expected for alpha.49.2: 62 tools. alpha.49 and alpha.49.1 had 61 (praxis_approval_journal is new in alpha.49.2); alpha.48 had 52.
MCP protocol eras
The Runtime speaks both eras on stdio (protocol=modern+legacy in its start log):
| Era | Capabilities | How approval dialogs work |
|---|---|---|
| Legacy (up to 2025-11-25) | Declared at initialize | The server sends elicitation/create to the client during the call |
| Modern (2026-07-28) | Sent in each request envelope | The server returns input_required; the client shows the dialog and retries the call with the answer |
dialog: true means the client declared form elicitation. It does not guarantee that the form was shown to a person (see the Claude Desktop Code tab below), and an answer is a client response, never proof that a person approved. praxis_doctor shows what the connected client declared in approval.client: name, version, protocolVersion, elicitation, dialog, flow and, when no dialog is available, reason.
Client matrix
Since 0.1.0-alpha.49.2 a protected action is approved only in the client's own dialog. Where there is none that Praxis can rely on, the action is not executed: Claude shows the preview, says it was not applied, and nobody is said to have rejected it.
| Client | Skills from marketplace | Runtime | Protected actions (0.1.0-alpha.49.2) | Status |
|---|---|---|---|---|
| Claude Code CLI 2.1.314, interactive terminal | Yes | Local stdio server from the praxis-runtime plugin | Approved in its own dialog, in both protocol eras. The answer is recorded as a client response (personVerified: false) | VERIFIED for alpha.49.2: marketplace install with dependencies, single MCP server, 62 tools, update from alpha.49.1 in place; the dialog driven with keys sent in a pseudo-terminal (Approve runs, Reject and Esc are recorded as such). Earlier, on 2026-10-22 (alpha.48, CLI 2.1.304), a run with a person: the real form was shown and Approve was chosen after 402.5 s. Neither run shows who answers in your session |
Claude Code CLI with an Elicitation hook, hooks or env in the repository's settings, or started with configuration flags (--settings, --plugin-dir, --agents and the like) | Yes | Same | Not executed: refused before asking; praxis_doctor names the file or flag | VERIFIED with Claude Code 2.1.314 |
Claude Code CLI, headless (claude -p) | Yes | Same | Not executed: the client cancels the dialog by itself; recorded as the client's answer | VERIFIED |
| Claude Desktop Code tab (Desktop 4.4212.0, embedded Claude Code 2.1.309) | Yes | Local stdio server from the praxis-runtime plugin, one process | Not executed. Desktop starts it with settings on its command line, so it is refused before asking. Its dialog also answers by itself in milliseconds without showing anything (anthropics/claude-code#89858, #96043) | VERIFIED in real Desktop Code sessions with release-candidate builds (refused before asking, nothing written; reviews, previews and read-only tools work). For the published build: Desktop's launch flags (--settings, --await-initialize) were read from a real Desktop Code session, and the release's tests refuse a client started with either; the published build itself was not run in the Desktop Code tab |
| Claude Cowork | Expected | Expected from the plugin | Not executed: no dialog | NOT VERIFIED in the real Cowork interface |
| Claude Desktop Chat | Skills may be available from the marketplace | A Runtime from a plugin is not automatically a Chat tool; install praxis-runtime.mcpb | Not executed: no dialog declared (dialog: false) | Refusal VERIFIED with the published MCPB and a scripted Chat client; the real Chat interface with this release and marketplace install in Chat NOT VERIFIED |
| Claude Web Chat | Skills only | None (no remote Praxis service) | Not applicable | Not applicable |
| Official MCP SDK 2.0 client | Not applicable | Packed Runtime | Approved in its dialog, both protocol eras | VERIFIED (npm run accept:approval-ux) |
| Other MCP clients | Not applicable | Packed Runtime | Unknown | Not verified; praxis_doctor tells you |
In Claude Desktop (Chat, Cowork and the Code tab), apply protected actions from the Claude Code CLI in a terminal, in the same repository. Requirements, reviews, prototypes, plans, stories, architecture, implementation records, Quality checks, and Git and Jira previews work in Desktop as before. See Approvals.
Verified for alpha.49.2 with Claude Code CLI 2.1.314 against the published marketplace: clean install of praxis with its five dependencies, a single role with its Runtime dependency, one MCP server, 62 tools, the retired PRAXIS_APPROVAL_MODE=trusted-client ignored, and the update from alpha.49.1. Also NOT VERIFIED: the Claude UI flow (Customize, Plugins, Add marketplace) itself, the real Desktop Chat and Cowork interfaces with this release, and a person answering the dialog (every answer in these tests was scripted, a hook or keys sent by a program).
In Claude Desktop Chat a protected apply may be held by Desktop's own tool-permission prompt before it reaches Praxis. See Troubleshooting.