Audit and insights
Find out who signed in and who changed what, watch authentication as it happens, and read the dashboards that summarise your account.
Authio keeps two records of everything that happens in your account: an access trail of every authentication attempt and a change trail of every administrative change. The console reads both through filters, rankings and charts computed on the server, streams sign-ins live, and sums the account up on the dashboard and in the notifications inbox.
All of it is scoped to your account: whatever realm or filter you ask for, you only ever see the activity of realms you own.
Two trails
| Trail | What it records | Kept for | In the console |
|---|---|---|---|
| Access | Every authentication attempt, in every grant, successful or refused. | 90 days | Audit › Access |
| Changes | Every create, update, delete and impersonation made through the console or the Admin API, applied or rejected. | 365 days | Audit › Changes |
Reading either trail requires the audit:read permission. Records past their retention are deleted automatically once a day.
The access trail
Each attempt is recorded with who made it, from where, with what credential and how it ended:
| Group | Fields |
|---|---|
| Outcome | Grant type, success, failure reason |
| Principal | The user (id, username, e-mail), the consumer or the API secret that authenticated |
| Origin | IP address, user agent, browser, device, operating system |
| Target | Realm, client, resource server, scopes, connection provider |
| How the person signed in | Authentication methods (amr), level (acr) and the external identity provider, for people’s sign-ins |
| Identifiers | Token id, session id, request id |
The grant types recorded are Password, ClientCredentials, PersonalAccessToken, AuthorizationCode, ApiKey, RefreshToken, TokenExchange, DeviceCode, Federated and Unknown. Federated marks a sign-in through an external provider that the hosted login then refused: a suspended or inactive account, no access to the client, an address not yet approved or a second factor rejected.
Reading it
- The overview shows the period’s key figures against the previous period of the same length, what was used and where it came from, and a heat map of when sign-in is attempted by day and hour.
- Rankings by grant type, realm, client, resource server, identity and IP address are clickable: each one becomes a filter.
- The pulse shows successes and failures per day; click a day to narrow the period to it.
- Records are paginated (5, 10, 25 or 50 per page). Each opens a detail panel with every field above, and a failed attempt offers Open in Wire Bench, already set up with its client and grant, to reproduce it.
The change trail
Every POST, PUT, PATCH and DELETE to the Admin API is recorded automatically after it runs, whether it came from the console or from your own tooling. Because recording happens in one place rather than endpoint by endpoint, a new part of the API is audited from the day it ships.
- Actions are
Create,Update,DeleteandImpersonate. - Each record holds the action, the kind and id of the resource, the realm and client, the author (id, name and e-mail), IP address, user agent, HTTP method, path, status code, whether it succeeded, the reason it failed and the request id.
- A secret rotation also records
details: itsmode(Immediate,OverlaporCompromise),previous_value_valid_untilandissued_tokens_revoked_before. See Rotating secrets. - Rejected attempts are recorded too, with their reason: a run of refused deletions is exactly what an audit wants to see.
- Reads are not recorded, and neither are writes that change no configuration, such as pinning a favourite, marking notifications as read or asking the AI advisor a question.
The overview counts changes, deletions, applied and rejected changes, ranks them by action, resource kind, realm and author, and shows when changes are made by day and hour.
Filter and export
- The period is 24 hours, 7, 30 or 90 days, or days you pick on the calendar. The trails open on the last 30 days.
- Search by user, address, client or resource, or paste a request id to find a single call. Outcome, grant type and resource server narrow the access trail; the action narrows the change trail.
- Realm, period and search stay in place when you switch between Access and Changes.
- The screens of a resource server, a connection provider and an identity provider link to the access trail already filtered to them.
- Export CSV downloads the whole filtered trail, not only the page on screen, as
access-logs-{date}.csvoraudit-trail-{date}.csv.
Live Auth Stream
Live Auth Stream shows sign-ins, token issuance and failures across every realm you own as they happen. Narrow it to one client, pause it, and open a failed event in Wire Bench to reproduce it. It keeps the latest 200 events and does not fill gaps: what happens while it is paused or disconnected is not shown there, so use the access trail for anything you need to look back on.
Activity where you work
You rarely need the full trail to answer a question about one thing. The Activity tab of a realm gathers its sign-in activity, open sessions, delegations and webhooks; the Activity tab of a client does the same for that application. Every activity list opens on its 5 most recent entries, pages through the rest at 5, 10, 25 or 50, and narrows to 24 hours, 7, 30 or 90 days, or to days you pick.
The dashboard
The Dashboard is where everyone lands after signing in. Each block appears only to people allowed to read what it shows, and a block that fails to load says so with a retry instead of showing zeros.
| Block | What it shows |
|---|---|
| Needs attention | Open critical notifications, clients that accept requests without authentication, expired API secrets, groups that grant no role and organizations that route no sign-in. |
| Overview | Authenticated accesses over the last 30 days, with the daily average and busiest day, and the counts of realms, clients and users against the 30 days before. |
| Hardening | The share of clients using PKCE, client authentication and token encryption; of users with a confirmed e-mail, a second factor, lockout and a role; and of consumers limited by scope or role. |
| What the account contains | How clients authenticate, Where the usage came from, clients and users per realm, recent realms and an inventory of roles, scopes, consumers, organizations, groups and API secrets. |
| Suspension calendar | Who is suspended now, suspensions scheduled or ending this week, and who is held on a given day. |
| Plan and usage | Your plan, each quota and how close it is to its limit, and the estimated cost of the period. |
| AI advisor | The advisor’s latest reading of the realms you turned it on for, when your plan includes it. |
| Activity | Recent access events and changes for the realm in scope, over the period you choose. |
Notifications
Authio checks your account every hour, and again whenever a watched resource changes, and raises a notification in Notifications when something needs you. A condition — a secret about to expire, a disabled webhook — stays open while it holds and clears itself once it stops. An event — a revoked key, a reused refresh token — stays until someone closes it. Marking a notification as read only records that it was seen.
| Notification | Severity | Raised when |
|---|---|---|
| Expired secret | Critical | An API secret is past its expiry. |
| Secret expiring | Warning | An API secret expires within 7 days. |
| Unusual authentication failures | Warning | 25% or more of sign-ins failed over the last 7 days, out of at least 20 attempts. |
| Inactive realm | Warning | A realm’s clients issue no tokens. |
| Webhook disabled | Critical | An endpoint was disabled after repeated failures. |
| Client deactivated | Warning | A client was deactivated. |
| Signing key revoked | Warning | A signing key was revoked. |
| Keys rotated | Info | Keys were rotated because their period ran out. |
| Refresh token reused | Critical | A refresh token was presented after it was exchanged, and its session was ended. |
| Sign-in awaiting approval | Warning, critical once the person refuses it | A sign-in from an unknown address is waiting for a decision. |
| Quota near its limit | Warning | A plan quota is at 80% or more. |
| Plan limit reached | Warning | Something could not be created because a quota is spent. |
| Trial ending | Warning, critical on the last day | The trial ends within 3 days. |
Notifications always appear in the inbox. The account owner chooses in Preferences whether they also go out by e-mail (on by default, to the account’s address unless another is given) and by webhook, and can switch a kind off entirely, which stops it being raised at all.
Reading the trails from the API
The same data is available to your own tooling through the Admin API, with the audit:read permission:
| Endpoint | Returns |
|---|---|
GET /api/v1/admin/access-logs | Access records, with the filters the console uses. |
GET /api/v1/admin/access-logs/summary | The access overview: totals, rankings, daily timeline and heat map. |
GET /api/v1/admin/access-logs/stream | Attempts as they happen, as Server-Sent Events. |
GET /api/v1/admin/audit-trail | Change records. |
GET /api/v1/admin/audit-trail/summary | The change overview. |
Ask in plain language
When your plan includes the AI advisor, the access trail accepts a question such as “failures on the storefront yesterday afternoon” and turns it into filters you can see and undo. With a single realm chosen, Read this period asks the advisor whether the failures look like a setting of yours or like credentials being tried. Both are described in Authio AI.