Private-app access is re-evaluated on every request, not only at login.

The Pramaan policy engine decides each private-app request against your access rules: one of four verdicts. Risk can turn an allow into a step-up.

Four verdicts

  • Allow

    The request goes through.

  • Deny

    The request is refused, with a reason a person can read.

  • Step-up

    Only after a recent sign-in, with the methods and maximum session age the rule names.

  • Inspect

    Web gateway only (the web gateway is off by default): allowed, but routed through deeper inspection first; other surfaces treat it as Allow.

Requests to private apps, and to web apps behind the sign-in check, are decided each time: group membership is re-read and the access rules are re-run on each request. Each access token is resolved on every call.

Engine output Answers come from the production engine, run ahead of time on a fixed rule set: our own sample, checked in order. backend/tests/site_policy_matrix.rs · f6860b3 · generated 2026-10-19
Policy what-ifOur sample rules, in order. Allow Deny Fallback: deny 44 scenarios

Group finance · App finance-app · Device tier trusted · Score 100 · Risk label none

  1. Finance app: finance group, trusted device, score at least 70, weekdays 09:00-18:00 UTC — matched, decided here
  2. Deny impossible travel — not evaluated: an earlier rule decided
  3. Decision: Allow

What this does not show: your policy, other request contexts, or combinations the posture model cannot produce.

Text version
  1. Allow (the finance app rule: finance group, trusted device, a minimum score, weekday hours)
  2. Deny (impossible travel)
  3. No match: deny (the sample set's fallback)

Adaptive step-up

With its switch on, the broker scores each request for risk. Impossible travel adds 100, three or more recent failed attempts by the person or from the address add 50, and a country outside the administrator's home list adds 40. At 60 or more the verdict becomes Step-up: the request needs a sign-in no older than 300 seconds. Adaptive step-up only raises a request that would otherwise be allowed, so a Deny stays a Deny. Our reference deployment turns it on.

Engine output Impossible travel alone steps up the request that carries it, unless its sign-in is no older than 300 s; adaptive step-up ends no session. Adaptive step-up is off by default and on in the reference deployment. backend/src/policy.rs adaptive_decision unit test (impossible travel alone) · f1f1617
Risk response timelineA request allowed, stepped up on impossible travel, then allowed again after a fresh sign-in. 60 0 100 Allow Step-up Allow Allow open travel sign-in next Roadmap: bands

What this does not show: the reputation and country weights, or risk bands beyond one threshold (roadmap).

Text version
TimeEventScoreDecision
Startsession open0Allow
Laterimpossible travel detected100, at or above 60Step-up required (fresh sign-in no older than 300 s)
Thenuser completes step-up—Allow
Afternext request—Allow (that sign-in is still fresh)

Bands beyond one threshold are on the roadmap. Roadmap

What each action ends

Illustrative
action
end
ActionWhat it ends
Revoking one session, or signing out everywhereThe sessions. Access tokens already issued stay valid until they expire, 300 seconds by default.
Deactivating or deleting a personTheir sessions, their renewal tokens and every access token issued to them. Their live direct connections are cancelled, not merely refused next time.
Revoking a deviceIts enrolment and the sessions signed in from it.
Disabling, re-scoping or removing a direct-connection applicationThe live direct connections to it are cancelled.
Disabling an AI agentIt stops new tokens; tokens already issued stay valid until they expire.

Live direct connections are the browser SSH terminal and connections that desktop tools forward.

For your engineers

Technical detail: session-end signals

With its switch on and a receiver subscribed, the broker sends CAEP session-revoked events when sign-out, an administrator, the person or a posture drop ends a session: a signed security event the receiver checks against the broker's published keys.

Runbooks: a recorded response

Illustrative
risk
runs
Contained

With runbooks switched on, the broker reacts to a posture drop, a reused refresh token, a non-compliant device, repeated failed sign-ins and impossible travel. Runbooks record a recommended response and apply nothing.

Applying one needs a second switch and a rule for that signal that opts in; then the broker can revoke a reused refresh-token family or quarantine the device. A recommended step-up is only recorded. Our reference deployment turns runbooks on and leaves that second switch off.

Questions

Is every request re-evaluated?

For private apps and web apps behind the sign-in check, yes; not for OIDC or SAML.

Can administrators change the weights?

Yes: administrators can retune the weights, the threshold and the window, and they can name the methods a step-up must use.

Does revoking a session end access at once?

No: tokens issued from it stay valid until they expire, unless you deactivate or delete the person.

Can other systems learn that a session ended?

Yes, once you switch it on and they subscribe: the broker sends standard session-revoked events. Delivery is best-effort.

Talk to us, or try it first

  1. Book a walkthrough

    Against your own apps, not slides.

  2. Run the lab

    It uses a demonstration account; none of your data is involved.

  3. See pricing

    Published floors, named-user bands and what every tier includes.