AxonFlow v9.15.0 Release Notes
v9.15.0 is an SSO release. Interactive SAML login, which could not complete on self-hosted in-vpc deployments, now works end-to-end, and a first-time SSO user is assigned their group-mapped role on login instead of landing with no permissions. It is a MINOR by the semver policy: it adds new backward-compatible capabilities (SSO role auto-provisioning, telemetry-by-version) and relaxes a refusal; it removes nothing and requires no new credential. No migrations.
Am I affected?
Self-hosted deployments using interactive SAML SSO login (in-vpc / enterprise) get the end-to-end login fix and role auto-provisioning. If you configured SAML SSO and login never completed, this release fixes it. You must set SSO_BASE_URL (see below).
Deployments using the governed /api/request plane get the relaxed empty-email behavior: a token with no email claim now proceeds org-only instead of receiving 403.
Everyone else: routine upgrade. No migrations, no configuration changes required.
Interactive SAML SSO login works end-to-end (in-vpc)
Interactive SAML SSO login was broken in three independent places on self-hosted in-vpc deployments and could not complete. All three are fixed:
- Login could not start. The login URL was built from the org id, but the SAML routes key on the config's addressing key (the
__platform__sentinel in in-vpc). Login now uses the addressing key and initiates correctly. - The assertion went to the wrong host. The AssertionConsumerService (ACS) URL was hardcoded to the public SaaS host, so the identity provider posted the SAML assertion there instead of to the customer's own portal. The ACS host is now derived from
SSO_BASE_URLand recomputed on every request, which also self-heals any ACS URL stored against the old hardcoded host (no re-save needed). - The session was unreadable. The callback wrote the session into tables the request validator never reads (and that no migration creates), so login returned a 500. The session is now written to
user_sessions, the store the validator resolves throughportal_session_lookup().
Set SSO_BASE_URL to your portal's external URL (for example https://portal.yourcompany.com) before configuring SAML SSO. If it is unset on a non-SaaS deployment, SAML assertions are directed to the default host and login will fail; the portal logs a loud warning at startup when this is the case.
Scope: this release fixes SAML SSO. Configure your identity provider (for example JumpCloud) as a SAML application. A native OIDC interactive-login flow does not yet exist and is tracked separately. See the SAML SSO setup guide for the JumpCloud walkthrough.
SSO users are assigned their role on login
When the SSO configuration has Auto-provision users enabled, a first-time SSO user (one with no existing active role in the organization) is assigned the role mapped from their identity-provider group, or the configured default role. Previously the group-to-role mapping was computed but discarded, so a new SSO user landed with no permissions and every gated action returned 403.
The provisioning is assign-if-absent: a user who already has a role, from SCIM, manual assignment, or a prior login, is left untouched, so it never downgrades an existing owner or conflicts with SCIM. It does not remove roles when the identity provider removes a group; full add-and-remove membership lifecycle remains the job of SCIM group-to-role mapping. Deployments that need de-provisioning should run SCIM.
Governed /api/request empty-email now proceeds org-only
v9.14.0 introduced a segment gate that fail-closed to 403 when a governed /api/request token carried no email claim. v9.15.0 relaxes this: an empty email now proceeds with org-only scoping, matching pre-v9.14 behavior. Segment-scoped policy targeting still requires an email claim. This affects only /api/request, not /api/v1/decide or the MCP planes.
Also in this release
- The internal telemetry digest breaks down usage by platform version.
- The self-hosted upgrade preflight carries the v9.14.0 upgrade advisories (export admin authority,
/api/requestemail-claim) and points at v9.15.0 as the release with the/api/requestorg-only fallback.
Before you upgrade
- No migrations. This release adds no schema and mutates no data.
- If you use SAML SSO: set
SSO_BASE_URLto your portal's external URL, and configure your identity provider as a SAML application. See the SAML SSO setup guide. - If you are already on v9.14.0/v9.14.1 and hitting the compliance-export 403 or the
/api/requestrefusal: you do not have to wait for v9.15.0 to remediate. See the v9.13 to v9.14 upgrade guide, which covers the in-place mitigation (an adminX-User-Tokenfor exports, and minting/api/requesttokens with an email claim).
SDK and plugin compatibility
No SDK or plugin changes are required. Clients compatible with v9.14.x are compatible with v9.15.0.
