Audit Events ​

The Audit Events page provides administrators with comprehensive visibility into all security-relevant actions and system events across GrantFlow. This immutable audit trail supports compliance requirements, security monitoring, and operational troubleshooting.

https://portal.grantflow.cloud
Audit Events

Overview ​

The Audit Events interface captures every significant action within GrantFlow, creating a tamper-proof record of who did what, when, and from where. This comprehensive logging helps you maintain compliance, investigate incidents, support access reviews, and demonstrate due diligence to auditors and stakeholders.

Admin Access Required

The Audit Events page is accessible only to users with administrative privileges. All audit queries are processed server-side with mandatory tenant filtering to ensure data isolation in multi-tenant deployments.

Audit Table ​

The main table presents a chronological view of all recorded events with the context needed to understand each action and its impact.

Event Information ​

Each row displays the event timestamp with date and time precision, the actor (user or system process) who initiated the action, the specific action performed (such as "Role Activated," "User Created," or "Approval Granted"), and the target resource affected by the action. Event severity is indicated by color-coded badges: neutral for routine operations, blue for informational events, amber for warnings, and red for critical security events.

Context Details ​

Additional context helps you understand the full picture. The source IP address shows where the action originated, useful for detecting anomalous access patterns or investigating potential security incidents. The user agent string reveals which client application or browser was used. A unique correlation ID ties related events together, allowing you to trace complex workflows like a role activation that triggered provisioning steps across multiple systems.

Event Outcome ​

Events clearly indicate whether the action succeeded or failed. Failed events include error messages or reasons, helping you identify configuration issues, permission problems, or potential security concerns quickly.

Search and Filtering ​

All filtering in the Audit Events page is performed server-side for security and performance. This ensures that large audit datasets are efficiently queried without loading excessive data to the browser, and that all filters respect tenant boundaries.

Use the search bar to find events by actor name, action type, resource, IP address, or any other field in the audit record. Results update dynamically to help you locate relevant events immediately.

Date Range Filtering ​

Focus on specific time windows using the date range picker. You can select preset ranges like "Last 24 Hours," "Last 7 Days," or "Last 30 Days," or define custom start and end dates for precise investigations. This is particularly useful for compliance reports, incident response, and scheduled access reviews.

Event Type Filter ​

Filter by event category to narrow the view to specific kinds of activity. See the Event Types Reference section below for a complete list of all auditable actions.

Actor Filter ​

Show events from a specific user, service account, or system process. This is particularly valuable during user access reviews or when investigating suspicious behavior attributed to a particular identity.

API Query Parameters ​

For programmatic access and advanced filtering, the audit events API supports these query parameters:

ParameterTypeDescription
startDateISO 8601Filter events after this timestamp
endDateISO 8601Filter events before this timestamp
actorStringFilter by actor user ID or name
actionStringFilter by action type (e.g., account.checkout)
resourceTypeStringFilter by resource type (e.g., Account, Role)
statusStringFilter by outcome (Success, Failed, Denied)
limitNumberMaximum results per page (default 50, max 1000)
offsetNumberPagination offset

Event Details ​

Click any event row to open the detailed view with complete information.

Full Event Record ​

The detail panel shows every captured field including the complete request payload, response data, before and after states for changes, full stack traces for errors, and all metadata associated with the event.

The correlation ID links to other events in the same logical transaction. For example, a single role activation might generate events for the request submission, approval decision, provisioning steps in Entra ID, group membership changes in Active Directory, and the final activation confirmation. Related events appear as a timeline so you can understand the full sequence.

Event Context ​

Contextual information includes the tenant scope, the session ID, authentication method used, and whether the action was performed interactively by a user or automatically by the system.

Export and Reporting ​

Export Options ​

Audit data can be exported to CSV or JSON format for analysis in external tools, compliance reporting, or long-term archival. Exports respect the current search and filter settings, allowing you to extract precisely the data you need.

Compliance Reports ​

GrantFlow supports automated compliance reporting for common frameworks. You can generate reports showing all privileged access within a time period, all changes to critical roles, all approval decisions, or all failed authentication attempts. Reports are formatted for submission to auditors and include all required fields.

Retention and Archival ​

Retention Policy ​

Audit events are retained according to your organization's compliance requirements. Most deployments retain detailed logs for 90 days online with immediate access, with older events archived for long-term storage. Your retention settings can be customized based on regulatory needs.

Data Integrity ​

The audit trail uses cryptographic techniques to ensure records cannot be modified or deleted after creation. Each event is digitally signed, and any attempt to tamper with historical logs is detectable. This immutability is critical for forensic investigations and regulatory compliance.

Common Use Cases ​

Security Monitoring ​

Monitor for suspicious patterns such as repeated failed login attempts from unusual locations, privilege escalations outside business hours, or access to sensitive roles by unexpected users. The audit trail provides the evidence needed to detect and respond to security incidents.

Compliance Audits ​

Demonstrate to auditors that privileged access is properly controlled and monitored. Show who accessed what, when approvals were required and granted, and that the principle of least privilege is enforced through time-limited activations.

Access Reviews ​

Support periodic access reviews by showing which roles each user activated, how frequently activations occurred, and whether the access pattern aligns with job responsibilities. Export reports for review committees and document review decisions.

Troubleshooting ​

When users report access problems or provisioning issues, the audit trail provides step-by-step visibility into what happened. Trace failed activations, identify where provisioning steps failed, and determine whether the issue was a configuration problem, a transient network error, or a permission issue in the target system.

Change Management ​

Track all configuration changes made by administrators, including who created new roles, modified approval policies, added or removed user assignments, or changed connector settings. This audit trail supports change management processes and helps maintain configuration integrity.

Pagination ​

For large audit datasets, pagination controls help you navigate efficiently. The page shows the current range of events displayed and the total count, with previous and next buttons to move through results. By default, 50 events are shown per page, but you can adjust this to view more or fewer records at once.

Real-Time Updates ​

The Audit Events view updates in near real-time as new events are captured.

Event Latency ​

Most events appear within seconds of the action occurring. High-frequency events may be batched for performance, but critical security events are always logged immediately.

Refresh ​

The page automatically refreshes periodically, or you can manually refresh to see the latest events instantly.

Event Types Reference ​

GrantFlow captures a comprehensive set of audit events across all system operations. Each event includes the action performed, the resource affected, the actor who initiated the action, and the outcome.

Account Events ​

ActionDescription
account.createNew privileged account created
account.updateAccount details modified
account.deleteAccount removed from GrantFlow
account.checkoutUser checked out an account
account.checkinUser checked in an account
account.checkin_retryA check-in whose account disable failed was tried again
account.checkin_resolveAn administrator closed a failed check-in on their own word (shown as Check-in Resolved by Admin)
account.checkout_dismissA requester cleared a failed checkout from their own cards. The checkout record is unchanged
account.enableAccount enabled for use
account.disableAccount disabled
account.admin_end_checkoutAdministrator forcibly ended a checkout
account.preview_provisioningProvisioning preview generated

Resolved check-ins ​

GrantFlow never observed the account being disabled when an administrator resolves a failed check-in, so account.checkin_resolve is the only record of why the checkout stopped representing live access. Its details carry the resolution (disabled_in_directory or directory_object_deleted), the administrator's note, and the failureCode of the failure it closed. On disabled_in_directory, GrantFlow also tries to rotate the account's password with the rotation reason checkin_resolve. The details then record rotationRequested, plus rotationSkipped with the reason when no rotation was started. These fields describe whether a rotation was requested, not whether it finished: a requested rotation runs as a password job that can stay pending or fail, so check that job in Connector Jobs before you treat the old password as replaced.

Expired passwords at checkout ​

When a checkout finds the account's password expired, GrantFlow rotates it before the checkout continues. That rotation is recorded as password_rotation.trigger, attributed to the requester, with trigger: expired_at_checkout and joined: true when the checkout waited for a rotation that was already running. A rotation that could not start is recorded as Failed, with rotationRequested: false and rotationSkipped. If the checkout is still refused, account.checkout is recorded as Denied with the reason password_rotating (the rotation is still running, so the requester can retry) or password_expired.

ActionDescription
account_link.createAccount assigned to a user
account_link.deleteAccount assignment removed

Role Events ​

ActionDescription
role.createNew role created
role.updateRole configuration modified
role.deleteRole removed
role.assignRole assigned to user
role.unassignRole assignment removed
role.assignment_updateAn existing role assignment was re-timed, for example extended (shown as Role Assignment Extended)

Role Assignment Events ​

ActionDescription
role_assignment.createRole assignment created
role_assignment.deleteRole assignment deleted

Activation Events ​

ActionDescription
activation.requestUser requested role activation
activation.approveActivation request approved
activation.denyActivation request denied
activation.activateRole activated for user
activation.expireActivation expired automatically
activation.cancelActivation cancelled
activation.extendActivation duration extended
activation.revoke_retryThe removal of an activation whose deprovisioning failed was tried again
activation.drift_detectedThe directory disagreed with GrantFlow's record when access was granted or removed, for example the user was already a member or was no longer one
activation.converge_hintProvisioning resolved the session target sent with the request, for confirming the AD change on the domain controllers that serve that target

Session target hints ​

When a user starts a session from a target, the portal sends that target along with the activation request or account checkout. GrantFlow keeps the target only if one of the user's roles grants access to it. Otherwise it drops the target without telling the requester, and the request goes ahead unchanged. The target only decides which domain controllers GrantFlow checks for the AD change. It never grants access.

The outcome is recorded in these details keys:

KeyValuesPresent
convergeHintapplied or droppedWhenever a target was sent
convergeTargetIdThe tunnel target IDWhen the hint was dropped, and on activation.converge_hint when it was applied
convergeHintReasonnot_granted, not_found, check_failed, connector_ambiguousWhen the hint was dropped
convergeTargetConnectorIdThe AD connector whose domain controllers are checkedactivation.converge_hint only, when the hint was applied

The keys appear on activation_request.create and account.checkout when the request is made. activation.converge_hint is recorded once, when an activation request that carries a target is provisioned and its role writes at least one AD group membership. At that point GrantFlow checks again that the role still grants the target and that the target still exists and is enabled. not_found covers a deleted or disabled target, and check_failed a lookup that failed. connector_ambiguous means GrantFlow could not tell which AD connector the target belongs to, for example because the target is an IP address and the role writes to several AD domains. The target's host name is never recorded.

Activation Request Events ​

ActionDescription
activation_request.createNew activation request submitted
activation_request.cancelActivation request cancelled by user
activation_request.expireActivation request expired without approval
activation_request.listActivation requests were listed
activation_request.dismissA requester cleared a failed activation from their own cards. The request keeps its failed provisioning status

Approval decisions ​

activation.approve and activation.deny record each decision on an activation request. Under a policy that needs two approvers, the first approval is recorded with outcome: awaiting further approval in its details. Each person's approval is recorded once: if the same person approves a request that is still pending again (a double click, a retry or a second device), no second activation.approve event is recorded.

activation.deny carries reason and reasonCode in its details. Both are stored after GrantFlow removes control, direction-override and invisible characters, so the audit trail shows the text the requester and the notification email see. See Denial reasons.

A decision made on a Microsoft Teams approval card is recorded with the channel teams. Such events have no source IP address, user agent or IP location, because the request reaches GrantFlow through the Microsoft Bot Framework and not from the approver's device.

Eligibility Events ​

ActionDescription
eligibility.createUser eligibility for role created
eligibility.updateEligibility settings modified
eligibility.deleteEligibility removed

Approver Policy Events ​

ActionDescription
approver_policy.createNew approval policy created
approver_policy.updateApproval policy modified
approver_policy.deleteApproval policy removed
approver_policy.assignPolicy assigned to role
approver_policy.validatePolicy validation performed

Account Policy Events ​

ActionDescription
account_policy.createNew account policy created
account_policy.updateAccount policy modified
account_policy.deleteAccount policy removed
account_policy.assignPolicy assigned to account

Password Events ​

ActionDescription
password.revealUser revealed account password
password.rotatePassword rotated
password.rotationPassword rotation completed
password_rotation.triggerOff-schedule rotation started: manual or API, after session use, after a rejected credential, or at checkout of an expired password
password_rotation.scheduledScheduled rotation executed
password_rotation.cancelPassword rotation cancelled

Connector Events ​

ActionDescription
connector.createNew connector created
connector.updateConnector configuration modified
connector.deleteConnector removed
connector.validateConnector validation performed
connector.syncDirectory sync initiated
connector.upsertConnector created or updated
connector.testConnector test executed
connector.credential_migrateA connector credential stored directly was moved into Azure Key Vault when it was used, or a superseded copy was removed

Role Provisioning Events ​

ActionDescription
role_provisioning.createProvisioning rule created
role_provisioning.updateProvisioning rule modified
role_provisioning.deleteProvisioning rule removed
role_provisioning.previewProvisioning preview generated
provisioning.createProvisioning action executed
provisioning.deleteProvisioning removed
provisioning.previewProvisioning preview

Agent Events ​

ActionDescription
agent.createNew agent registered
agent.updateAgent configuration modified
agent.deleteAgent removed
agent.revokeAgent certificate revoked
agent.update_connectorAgent connector assignment changed
agent.update_capabilitiesAgent capabilities modified
agent.regenerate_enrollment_codeNew enrollment token generated
agent.force_cert_renewalAn administrator forced the agent to renew its certificate
agent.certificate_issuedThe agent's certificate was issued at enrollment
agent.certificate_renewedThe agent's certificate was renewed
agent.certificate_refusedA certificate request from the agent was refused
agent.self_update_requestedAn administrator selected Update now for the agent
agent.self_update_completedThe agent reported a successful self-update
agent.self_update_failedThe agent reported a failed self-update
agent.self_update_blockedThe agent was excluded from further automatic updates after repeated failures (shown as Agent Updates Blocked)
agent_update_policy.setThe tenant-wide agent update policy was changed. It names no single agent

Job Events ​

ActionDescription
job.createBackground job created
job.completeJob completed successfully
job.failJob failed
job.cancelJob cancelled
job.callbackJob callback received
job.submit_ad_syncAD sync job submitted
job.submit_ad_testAD connection test submitted
job.submit_entra_syncEntra ID sync job submitted
job.submit_entra_testEntra ID connection test submitted

Callback Events ​

ActionDescription
callback.account_checkoutCheckout callback processed
callback.sync_resultSync result callback received
callback.password_rotationPassword rotation callback processed

Authentication Events ​

ActionDescription
auth.loginUser logged in
auth.logoutUser logged out
auth.mfaMFA challenge completed

User Events ​

ActionDescription
user.createNew user created
user.updateUser profile modified
user.deleteUser removed

Rate Limiting Events ​

ActionDescription
rate_limit.exceededRate limit exceeded for user
rate_limit.ip_exceededIP-based rate limit exceeded

Administrative Events ​

ActionDescription
admin.access_deniedAdministrative access denied
audit_log.listAudit log listing accessed
audit_log.viewAudit log entry viewed
compliance_report.viewA compliance report was viewed
access_paths.person_viewedAn administrator viewed one person's live access paths

MCP Events ​

ActionDescription
mcp.readAn AI assistant connected through the GrantFlow MCP server called a read tool
mcp.writeAn AI assistant called a write tool, including calls that only returned a preview

Every MCP tool call writes one of these events, with the tool's name in details.tool. When a write tool changes something, the change itself is recorded again under its usual action, for example eligibility.create, with the channel mcp.

Resource Types ​

Each event is associated with a resource type for easier filtering:

Resource TypeDescription
AccountPrivileged account
AccountLinkAccount-to-user assignment
AccountCheckoutActive checkout session
RoleGrantFlow role
RoleAssignmentRole-to-user assignment
ActivationActive role activation
ActivationRequestPending activation request
EligibilityUser eligibility for role
ApproverPolicyApproval workflow policy
AccountPolicyAccount checkout policy
ConnectorIdentity connector
UserGrantFlow user
SessionUser session
PasswordAccount password
PasswordRotationPassword rotation job
RoleProvisioningProvisioning configuration
JobBackground job
AgentOn-premises agent
AgentUpdatePolicyTenant-wide agent update policy
ControlPlaneJobControl plane job
APIAPI operation
AuditLogAudit log access
NotificationTemplateNotification template
NotificationConfigNotification channel configuration
ReportCompliance report
GroupDirectory group, as the subject of an access read
EntraRoleEntra ID role, as the subject of an access read
TunnelZoneRemote session zone
TunnelTargetRemote session target
TunnelFolderFolder that organizes session targets
TunnelSettingsRecording retention and playback settings
TunnelSessionRemote session
TeamsConversationA user's 1:1 chat with the GrantFlow Teams app
TeamsSettingsThe tenant's Teams approval cards switch

Event Status ​

Every audit event includes an outcome status:

StatusDescription
SuccessOperation completed successfully
FailedOperation failed (check details for reason)
DeniedOperation denied due to authorization
PendingOperation is pending completion
ThrottledOperation rejected due to rate limiting

Notification Events ​

Event TypeShown AsDescription
notification_template.createNotification Template CreatedA notification template was created
notification_template.updateNotification Template UpdatedA notification template was replaced
notification_template.patchNotification Template PatchedPart of a notification template was changed
notification_template.deleteNotification Template DeletedA notification template was deleted
notification_template.seedNotification Templates SeededThe default notification templates were created
notification_template.send_testTest Notification SentA test notification was sent from a template
notification_config.updateChannel Config UpdatedA notification channel's configuration was changed

Individual notification deliveries are not audit events. See the Notification Delivery Log for them.

Session Events ​

Event TypeShown AsDescription
browser_session.history_listSession History ListedBrowser session history was listed

Audit entries are correlated via a session identifier, enabling end-to-end tracing of actions within a single login session. See Browser Sessions.

Remote Session Configuration Events ​

Event TypeShown AsDescription
tunnel.zone.createdZone CreatedA session zone was created
tunnel.zone.updatedZone UpdatedA session zone was changed
tunnel.zone.deletedZone DeletedA session zone was deleted
tunnel.zone.allowlist_pushedZone Allowlist PushedA zone's derived allowlist was pushed to its agents, with version, outcome and per-agent counts. The actor is the administrator whose change triggered it
tunnel.zone.allowlist_migratedZone Allowlist MigratedA zone's connection policy was moved, once, into its derived allowlist, with the rules dropped and the hosts that need review
tunnel.target.createdTarget CreatedA session target was created
tunnel.target.updatedTarget UpdatedA session target was changed
tunnel.target.deletedTarget DeletedA session target was deleted
tunnel.target.importedTarget ImportedSession targets were imported
tunnel.target.movedTargets Moved to FolderTargets were moved between folders in one step, with each target's previous folder
tunnel.folder.createdFolder CreatedA session target folder was created
tunnel.folder.updatedFolder UpdatedA session target folder was renamed or moved
tunnel.folder.deletedFolder DeletedA session target folder was deleted
tunnel.target.identity_pinnedTarget Identity PinnedA target's server identity was pinned
tunnel.target.identity_clearedTarget Identity ClearedA target's pinned server identity was cleared
tunnel.target.identity_check_changedTarget Identity Check ChangedThe server identity check of a target was turned on or off
tunnel.target.identity_probedTarget Identity ProbedGrantFlow connected to a target to read its server identity
tunnel.agent.limits_setTunnel Agent Limits SetAn administrator changed one tunnel agent's data limits
tunnel.role.targets_setRole Targets SetThe session targets a role grants access to were changed. Recorded against the role
tunnel.settings.updatedSession Settings UpdatedRecording retention, or who may play recordings back, was changed

Folders only organize targets on the Sessions page and grant nothing. Marking a target as a favorite and the recently used list are personal views and write no audit events.

Remote Session Lifecycle Events ​

Event TypeShown AsDescription
tunnel.session.requestedSession RequestedA user asked to open a remote session
tunnel.session.deniedSession DeniedA session request was refused, for example because the user is not entitled to the target
tunnel.session.openedSession OpenedA remote session was opened
tunnel.session.closedSession ClosedA remote session was closed
tunnel.session.terminatedSession Terminated by AdminAn administrator ended a session
tunnel.session.close_unconfirmedSession Close UnconfirmedThe close of a session was not confirmed before the session's deadline passed
tunnel.session.credential_releasedSession Credential ReleasedA checked-out account's password was released to the gateway for injection. The event never contains the password
tunnel.session.credential_deniedSession Credential DeniedA credential was not released, or could not be delivered after release, and the session ended
tunnel.session.credential_rejectedSession Credential RejectedThe target refused an injected password. GrantFlow rotates the account's password once per checkout to realign the directory and the vault
tunnel.recording.viewedRecording ViewedA recording was played back. Recorded with the viewer and the mandatory reason before playback starts
tunnel.recording.legal_hold_setRecording Legal Hold SetA legal hold was placed on a recording
tunnel.recording.legal_hold_clearedRecording Legal Hold ClearedA legal hold was removed from a recording
tunnel.recording.expiredRecording ExpiredThe retention sweep deleted a recording
tunnel.recording.storedRecording StoredThe gateway reported the stored recording for a session
tunnel.recording.linkedRecording LinkedA stored recording whose gateway report never arrived was linked to its session
tunnel.recording.completedRecording CompletedA recording linked as partial became complete

Both tunnel.session.requested and tunnel.session.denied are recorded, so a refused attempt to reach a target the user is not entitled to always leaves a trace.

Microsoft Teams Events ​

Event TypeShown AsDescription
teams.app.installedTeams App InstalledA user installed the GrantFlow Teams app, so approval cards can reach them
teams.app.removedTeams App RemovedA user removed the GrantFlow Teams app
teams.conversation.verifiedTeams Conversation VerifiedGrantFlow created and checked a 1:1 chat with a user. For an app installed by an administrator, this is the first record that the user can be reached
teams.signin.refusedTeams Sign-in RefusedA valid sign-in on a card belonged to a different tenant or user than the chat, for example a forwarded card or a shared device
teams.settings.updatedTeams Settings UpdatedAn administrator turned Teams approval cards on or off. Only a real change is recorded

Decisions made on a Teams card are recorded as activation.approve and activation.deny with the channel teams. See Approval decisions and Teams Approval Cards Setup.

Remote Session File Transfer Events ​

Event TypeShown AsDescription
tunnel.session.file_transferredSession File TransferredOne file moved to or from an RDP or SSH target: direction, file name, size, SHA-256 checksum and outcome. SSH transfers through the file browser also record the directory
tunnel.session.directories_listedSession Directories ListedHow many directories an SSH session's file browser listed, written once when the session ends, if it listed any
tunnel.session.companion_openedSession File Browser ConnectedThe file transfer connection of an SSH session was opened (Success), refused (Denied) or failed (Failed)

See Session File Transfer for what each event means.

SIEM Audit Feed and Step-up Events ​

These events cover the feed tokens your SIEM uses and the step-up setting that protects them. In the Audit Events filter they are grouped under SIEM Audit Feed. The step-up change and the feed token theft signals (new origin, history requested and rejected token) are shown as security events; the other feed token events as audit configuration.

Event TypeShown AsDescription
tenant.step_up.updateStep-up Context UpdatedThe step-up authentication context was set or cleared (Success), or the change was refused because the session was not strong enough (Denied)
audit_feed_token.createFeed Token CreatedA feed token was created (Success), or creation was refused because the session was not strong enough (Denied)
audit_feed_token.revokeFeed Token RevokedA feed token was revoked
audit_feed_token.first_useFeed Token First UsedA feed token polled the feed for the first time
audit_feed_token.new_originFeed Token New OriginA feed token polled from a different network or country than before, at most once an hour per token
audit_feed_token.history_requestedFeed Token History RequestedA feed token asked for history from a start time instead of continuing from a cursor, at most once an hour per token
audit_feed_token.auth_failedFeed Token RejectedA request presented a feed token with a wrong secret, or a revoked token

A refused step-up records the strength GrantFlow required, the strength the session had, the weakest sign-in method and whether GrantFlow offered an in-place step-up or a fresh sign-in. See Step-up Authentication and SIEM Integration.

Best Practices ​

Regular Monitoring ​

Establish a routine for reviewing audit events, particularly focusing on critical security actions, failed operations, and out-of-hours activity. Proactive monitoring helps detect issues before they escalate.

Alert Configuration ​

Consider configuring alerts for high-severity events or unusual patterns. While alert configuration happens outside the Audit Events page, the events captured here form the foundation for automated security monitoring.

Documentation ​

When investigating incidents or conducting access reviews, document your findings by exporting relevant audit records and including them in your reports. The correlation IDs and detailed context make it easy to reconstruct exactly what happened.

Training ​

Ensure your security and compliance teams understand how to read and interpret audit events. Regular training on common event types, severity levels, and investigation techniques ensures your team can respond effectively to security concerns.