AxonFlow v7.4.3 Release Notes
AxonFlow v7.4.3 is a documentation-grade patch. Two MCP-response schemas have been stale relative to what the agent has emitted since the Plugin Batch 1 work in v7.1.0. AxonFlow's hand-written plugins (OpenClaw, Claude Code, Cursor, Codex) all read these fields correctly because they were authored against actual server responses; the OpenAPI spec just hadn't been updated. Code-generated clients written against the prior spec would have read undefined for these fields.
Same day, the four AxonFlow SDKs caught up to the same field set as a coordinated cycle: TypeScript v6.1.0, Python v6.8.0, Go v5.8.0, and Java v6.1.0.
| Surface | Version | Change type |
|---|---|---|
| Platform | v7.4.3 | PATCH — MCP-response spec corrections |
| TypeScript SDK | v6.1.0 | MINOR — additive Plugin Batch 1 fields |
| Python SDK | v6.8.0 | MINOR — additive Plugin Batch 1 fields |
| Go SDK | v5.8.0 | MINOR — additive Plugin Batch 1 fields |
| Java SDK | v6.1.0 | MINOR — same field set |
MCPCheckInputResponse gains 5 fields
The agent has emitted these on /api/v1/mcp/check-input since v7.1.0 (Plugin Batch 1 richer block context); the spec just hadn't documented them.
decision_id— audit correlator linking this MCP decision to itsaudit_logsrow.risk_level— one oflow,medium,high,critical. Drives client-side approval UX (e.g. plugins that route high/critical to a HITL queue).policy_matches— array ofExplainPolicyrecords (per-policy explainability). Each entry carriespolicy_id,policy_name,action,risk_level,allow_override,policy_description.override_available— boolean. True if the matched policies allow a session override (governed viaPOST /api/v1/policies/{id}/overrides).override_existing_id— string. If a session override is already active and was consumed by this decision, the override's UUID is returned here.
MCPCheckOutputResponse gains 3 fields
Same Plugin Batch 1 surface, output side.
decision_idpolicy_matches— array ofExplainPolicyredacted_message— text-redaction counterpart toredacted_data. Used when the connector returned a string message (e.g. an execute-style response) rather than tabular rows.
New explainability schemas
Three schemas added to agent-api.yaml to describe the explainability surface returned by client.explainDecision() and the explain_decision MCP tool:
ExplainPolicy— per-policy explainability record. Same shape used inpolicy_matchesarrays above.ExplainRule— per-rule explainability record (one rung lower than policy: a single regex / condition fired within a policy).DecisionExplanation— full payload returned byGET /api/v1/decisions/{id}/explainand theexplain_decisionMCP tool.
The matching documentation page at Governance / Explainability already documented the field shape; v7.4.3 adds the OpenAPI artefact. See also MCP Policy Enforcement for the MCP-side surface.
SDK catch-up — TypeScript v6.1.0, Python v6.8.0, Go v5.8.0, Java v6.1.0
All four SDKs surface the same field set on the same day. Pure Cat B field-additions on existing methods — no new SDK methods, no breaking changes. Pre-v7.1.0 platforms return zero/null/undefined for every field; callers should treat absence as "context not available" rather than an error.
TypeScript v6.1.0
MCPCheckInputResponsegainsdecision_id?,risk_level?,policy_matches?: MCPExplainPolicy[],override_available?,override_existing_id?.MCPCheckOutputResponsegainsdecision_id?,policy_matches?,redacted_message?.- New exported interface
MCPExplainPolicy— snake_case wire shape. Distinct from the existing camelCaseExplainPolicy(insrc/types/decisions.ts), which is the hand-decoded view returned byclient.explainDecision(). Both describe the same logical record; the dual-name distinction follows the SDK's existing wire-vs-decoded convention.
Python v6.8.0
MCPCheckInputResponsegainsdecision_id,risk_level,policy_matches: list[ExplainPolicy] | None,override_available,override_existing_id.MCPCheckOutputResponsegainsdecision_id,policy_matches,redacted_message.ExplainPolicyis now re-exported fromaxonflow.types(was previously only inaxonflow.decisions). Same Pydantic model — Python's snake_case convention naturally aligns wire-shape and SDK types, so no separate model is needed.
Go v5.8.0
MCPCheckInputResponsegainsDecisionID,RiskLevel,PolicyMatches []ExplainPolicy,OverrideAvailable *bool,OverrideExistingID.MCPCheckOutputResponsegainsDecisionID,PolicyMatches,RedactedMessage.ExplainPolicyalready shipped (indecisions.go) — same struct now reused on MCP responses.
Java v6.1.0
- Same field set on
MCPCheckInputResponse/MCPCheckOutputResponse.ExplainPolicyalready shipped on the decisions side — same Jackson-annotated record reused on MCP responses.
Deferred across all four SDKs
client.explainDecision(decisionId) and the full ExplainRule / DecisionExplanation shapes (returned by the explain_decision MCP tool) are tracked separately as feature work — see axonflow-enterprise#1716. v7.4.3 / v6.1.0-train ships only the field-surfacing on existing methods.
Companion plugin gate work
The four AxonFlow plugins (OpenClaw, Claude Code, Cursor, Codex) have wire-shape contract gates that mirror the four SDK gates. Each gate's initial baseline grandfathers Plugin Batch 1 fields as known spec-missing drift; the next baseline regen against this v7.4.3 spec auto-resolves the bulk:
- OpenClaw plugin: 7 SDK-only fields cleared from
MCPCheck*responses + 3 unmapped types (ExplainPolicy/ExplainRule/DecisionExplanation) now mapped. - Claude Code / Cursor / Codex plugins: 5 plugin-only field entries clear per plugin (4 from
MCPCheckInputResponse+ 1 fromMCPCheckOutputResponse).
SDK and plugin compatibility
| Surface | Version |
|---|---|
| Python SDK | v6.8.0 |
| Go SDK | v5.8.0 |
| TypeScript SDK | v6.1.0 |
| Java SDK | v6.1.0 |
| OpenClaw plugin | v1.3.2 |
| Claude Code / Cursor plugins | v0.5.2 |
| Codex plugin | v0.4.2 |
Who is affected
- Hand-written SDK users on TS / Python / Go / Java: bump to surface the Plugin Batch 1 fields on
mcpCheckInput/mcpCheckOutput(mcp_check_input/mcp_check_output/MCPCheckInput/MCPCheckOutputin the per-language casing). All additive — existing callers keep compiling. - Plugin authors: regenerate against the v7.4.3 spec to clear the Plugin Batch 1 baseline drift.
- Code-generated client users: regenerate against
docs/api/agent-api.yamlfrom v7.4.3 to pick up the newMCPCheckInputResponse/MCPCheckOutputResponsefields and the three new explainability schemas. - Operators of the platform: v7.4.3 is documentation-grade with no behavior change; rolling restart suffices.
