Skip to content

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).

ItemValueSource
Product version0.1.0-alpha.49.2package.json, ecosystem.json, plugin manifests
Marketplace entriesall 0.1.0-alpha.49.2.claude-plugin/marketplace.json
Node.js>=20engines in package.json; MCPB compatibility.runtimes.node
MCPB platformsdarwin, win32, linuxMCPB manifest
Claude Code (required by the release candidate)>=2.1.278requiredHostVersions in release-candidate/manifest.json
Claude Code used for verification2.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:

Repositoryvendor/manifest.json versionCore baseline (commit)Packages
praxis-runtime0.1.0-alpha.49.2984d4f4058fbc0194def498bcb68bd0d852cbfbacontracts, project-config, knowledge, jira, vcs, cli
praxis-ba0.1.0-alpha.49.2984d4f4058fbc0194def498bcb68bd0d852cbfbaplugin-sdk, knowledge, project-config, contracts
praxis-architect, praxis-developer0.1.0-alpha.49.2984d4f4058fbc0194def498bcb68bd0d852cbfbaplugin-sdk, knowledge, project-config, contracts
praxis-quality0.1.0-alpha.49.2984d4f4058fbc0194def498bcb68bd0d852cbfbaplugin-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):

EraCapabilitiesHow approval dialogs work
Legacy (up to 2025-11-25)Declared at initializeThe server sends elicitation/create to the client during the call
Modern (2026-07-28)Sent in each request envelopeThe 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.

ClientSkills from marketplaceRuntimeProtected actions (0.1.0-alpha.49.2)Status
Claude Code CLI 2.1.314, interactive terminalYesLocal stdio server from the praxis-runtime pluginApproved 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)YesSameNot executed: refused before asking; praxis_doctor names the file or flagVERIFIED with Claude Code 2.1.314
Claude Code CLI, headless (claude -p)YesSameNot executed: the client cancels the dialog by itself; recorded as the client's answerVERIFIED
Claude Desktop Code tab (Desktop 4.4212.0, embedded Claude Code 2.1.309)YesLocal stdio server from the praxis-runtime plugin, one processNot 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 CoworkExpectedExpected from the pluginNot executed: no dialogNOT VERIFIED in the real Cowork interface
Claude Desktop ChatSkills may be available from the marketplaceA Runtime from a plugin is not automatically a Chat tool; install praxis-runtime.mcpbNot 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 ChatSkills onlyNone (no remote Praxis service)Not applicableNot applicable
Official MCP SDK 2.0 clientNot applicablePacked RuntimeApproved in its dialog, both protocol erasVERIFIED (npm run accept:approval-ux)
Other MCP clientsNot applicablePacked RuntimeUnknownNot 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.