Releases: getaxonflow/axonflow-cursor-plugin
v1.0.0
Upgrade strongly recommended. Over the past month we've shipped substantial production, quality, and security hardening across the AxonFlow plugin and platform — upgrade to the latest version for a more secure, reliable, and bug-free experience.
Security highlights from this release cycle:
- Plugin cache and credential-file permission hardening (this release).
~/.config/axonflow/and~/.cache/axonflow/are tightened to mode0700on every invocation (was: only set on creation, leaving pre-existing world-readable directories unchanged);try-registration.jsonis written with mode0600. Pre-existing world-readable credential files are detected and refused on first load. Documented inGHSA-qc7h-rq59-m293. - Cross-platform bootstrap reliability (this release). macOS Community-SaaS bootstrap was silently no-op'ing because
flock(1)is Linux-only; now uses a portablemkdir-based atomic lock with stale-lock reclamation, so first-install registration runs on macOS too. - Telemetry opt-out reliability (this release).
DO_NOT_TRACKwas unreliable because host CLIs commonly injectDO_NOT_TRACK=1into hook subprocesses regardless of user intent; the canonical opt-out is nowAXONFLOW_TELEMETRY=off, an AxonFlow-scoped signal hosts can't unilaterally set.
The full set of platform-side security fixes shipped alongside this release — including multi-tenant isolation in MAP execution, cross-tenant audit-log isolation, and SQLi enforcement on the Community SaaS endpoint — is documented in the consolidated platform advisory GHSA-9h64-2846-7x7f.
Reliability and bug-fix highlights:
- 7-day delivered-heartbeat with stamp-on-success (this release). Telemetry stamp advances only after the POST returns 2xx, so a transient network failure no longer silences telemetry until the next 7-day window. Concurrent invocations are de-duplicated by an in-flight gate.
- Mode-clarity canary log line on every hook init (this release). Stderr emits
[AxonFlow] Connected to AxonFlow at <URL> (mode=...)and a PR-blocking CI gate asserts the canary matches the actual outbound destination, guarding against silent endpoint drift. - PR-blocking install-to-use smoke against the live community stack (this release). Catches plugin-side regressions against
try.getaxonflow.combefore they reach a user's terminal.
BREAKING
DO_NOT_TRACKis no longer honored as an AxonFlow telemetry opt-out. UseAXONFLOW_TELEMETRY=offinstead. Host tools and CLIs commonly injectDO_NOT_TRACK=1regardless of user intent, which makes it unreliable as a signal.
Added
- First-run Community-SaaS bootstrap — plugin connects to AxonFlow Community SaaS at
https://try.getaxonflow.comwhen neitherAXONFLOW_ENDPOINTnorAXONFLOW_AUTHis set. Registers via/api/v1/registeron first run and persists{tenant_id, secret, expires_at, endpoint}to~/.config/axonflow/try-registration.json(mode 0600 inside a 0700 directory). Refuses to load a registration file with non-0600 permissions. HTTP 429 → 1-hour backoff. Existing self-hosted installs (AXONFLOW_ENDPOINTorAXONFLOW_AUTHset) are honoured untouched. - Mode-clarity canary on every hook init:
[AxonFlow] Connected to AxonFlow at <URL> (mode=community-saas|self-hosted)on stderr. A CI gate parses this canary and asserts it matches the actual outbound destination. - One-time setup disclosure on first Community-SaaS connection. Stamped at
~/.cache/axonflow/cursor-plugin-disclosure-shownso it fires exactly once per install. - Plugin/platform version compatibility check (
scripts/version-check.sh). Queries the agent's/healthendpoint and warns if the plugin runtime is below the platform's expected floor. Skippable viaAXONFLOW_PLUGIN_VERSION_CHECK=off.
Changed
- Telemetry switched to a 7-day delivered-heartbeat. At most one anonymous ping per environment every 7 days, with the stamp advanced only after the POST returns 2xx — a transient network failure doesn't silence telemetry until the next window. Concurrent invocations are de-duplicated by an in-flight gate.
Fixed
- The
DO_NOT_TRACK=1 is deprecated...warning is no longer emitted on every hook invocation whenDO_NOT_TRACK=1is set. - Telemetry heartbeat now correctly classifies Community-SaaS sessions (was tagged
productionbecause the bootstrap-injectedAXONFLOW_AUTHshadowed the resolver, sending/healthprobes to localhost andplatform_version=nullwith the wrongdeployment_mode). - Bootstrap and heartbeat now run on macOS —
flock(1)isn't on stock macOS, so the in-flight lock falls back to amkdir-based atomic lock with stale-lock reclamation whenflockis unavailable.
Security
~/.config/axonflow/and~/.cache/axonflow/permissions tightened to0700on every invocation (was: only set on creation viamkdir -m 0700, which left existing 0755 dirs unchanged).
v0.5.2
Deprecated
DO_NOT_TRACK=1as an AxonFlow telemetry opt-out — scheduled for removal after 2026-05-05 in the next major release. UseAXONFLOW_TELEMETRY=offinstead. The plugin'stelemetry-ping.shemits a one-time stderr warning whenDO_NOT_TRACK=1is the active control andAXONFLOW_TELEMETRY=offis not also set.
v0.5.1
[0.5.1] - 2026-04-19
Added
- Smoke E2E scenario at
tests/e2e/smoke-block-context.sh— runspre-tool-check.shagainst a reachable AxonFlow stack and asserts the hook exits 2 withAxonFlow policy violation+ Plugin Batch 1 richer-context markers on stderr. Exits 0 (SKIP:) when no stack is reachable. .github/workflows/smoke-e2e.yml—workflow_dispatchtriggered job running the smoke scenario. Requires an operator-supplied endpoint (GitHub-hosted runners have no local stack), so not wired to PR events — PR smoke gating needs a self-hosted runner with a live stack.
Full install-and-use matrix lives in axonflow-enterprise/tests/e2e/plugin-batch-1/cursor-install/.
Compatibility
Companion to platform v7.1.1. No code changes vs v0.5.0 — the patch bump only adds the smoke E2E. Users on v0.5.0 against platform v7.1.1 still get the full richer-context block shape automatically.
v0.5.0 — Plugin Batch 1
[0.5.0] - 2026-04-18
Added
- Richer block reason surfaced to Cursor on policy blocks. When the
AxonFlow platform is v7.1.0+, the stderr message accompanying the
exit 2block now includes[decision: <id>, risk: <level>, active override: <ov>]or a pointer to theexplain_decisionMCP tool so
the user knows how to unblock themselves. Older platforms see the
prior v0.4.0 message — fields are omitted when not returned. - Access to platform MCP tools
explain_decision,create_override,
delete_override,list_overrides— available via the agent's MCP
server when connected to a v7.1.0+ platform. Cursor's MCP client can
invoke them directly.
Compatibility
Companion to platform v7.1.0 and SDKs v5.4.0 / v6.4.0. Back-compatible.
v0.4.0
What's New
Telemetry
- Anonymous telemetry ping on first hook invocation. Sends plugin version, OS/arch/bash version, and AxonFlow platform version
- Stamp file guard at
$HOME/.cache/axonflow/cursor-plugin-telemetry-sentprevents repeat pings - Opt out with
DO_NOT_TRACK=1orAXONFLOW_TELEMETRY=off
Skills Parity
- 3 new governance skills:
pii-scan,governance-status,policy-list— Cursor now has 6 skills matching the Codex plugin
Fixed
- UTF-8 safe content truncation — character-level
cut -c1-2000instead of byte-levelhead -c 2000 - Consistent curl error reporting —
post-tool-audit.shuses-sSmatchingpre-tool-check.sh - Removed unused
PII_ALLOWEDvariable from shell write PII scanning - Improved shell write content extraction regex with better heredoc and single-quote handling
Changed
- Hook timeout increased from 10s to 15s across all 4 hook types
- CI workflow suppresses telemetry with
DO_NOT_TRACK=1 - SECURITY.md timestamp updated to April 2026
v0.3.1
Added
- Decision-matrix regression tests for the v0.3.0 hook fail-open/fail-closed behavior. Mock-server cases for every JSON-RPC error branch.
v0.3.0 — Hook fail-open hardening
See CHANGELOG.md. Hook fail-open/fail-closed hardening (matches axonflow-enterprise v6.2.0 #1545 Direction 3).
v0.2.0
Initial public release.
Added
preToolUsehook: evaluates tool inputs against AxonFlow policies before execution. Blocks dangerous commands, reverse shells, SSRF, credential access, path traversal via exit code 2.postToolUsehook: records tool execution in AxonFlow audit trail and scans output for PII/secrets.beforeShellExecutionhook: additional shell command enforcement layer.afterFileEdithook: audit trail for file modifications.- PII detection in file writes via
check_outputscan on shell redirect commands. Configurable viaPII_ACTIONenv var:block,redact(default — denies and instructs agent to rewrite with redacted content),warn,log. - MCP server integration with 6 governance tools:
check_policy,check_output,audit_tool_call,list_policies,get_policy_stats,search_audit_events. - 3 governance skills:
check-governance,audit-search,policy-stats. .mdcgovernance rules for always-on policy context.- Audit logging for blocked attempts.
- Fail-open on network failure, fail-closed on auth/config errors.
- Governed tools:
Shell,Write,Edit,Read,Task,NotebookEdit, and MCP tools (mcp__*). AXONFLOW_TIMEOUT_SECONDSenvironment variable to tune Cursor hook HTTP timeouts for remote or high-latency AxonFlow deployments.- Plugin logo for marketplace and directory listings.
SECURITY.mdwith plugin-specific vulnerability reporting guidance.- Regression tests with mock MCP server (
tests/test-hooks.sh, 20 tests). - CI workflow: shellcheck, syntax check, regression tests, plugin structure validation.
- E2E testing playbook with 17 verified tests.
Configuration
AXONFLOW_ENDPOINT— AxonFlow Agent URL (default:http://localhost:8080).AXONFLOW_AUTH— Base64-encodedclientId:clientSecretfor Basic auth.AXONFLOW_TIMEOUT_SECONDS— optional override for hook HTTP timeouts.PII_ACTION— PII enforcement mode:block,redact(default),warn,log.- Plugin installed at
~/.cursor/plugins/local/axonflow-cursor-plugin(copy, not symlink). hooks.jsonrequires"version": 1for Cursor compatibility.