Skip to content

App & Service Principal Credential Expiry

The question it answers: Which client secrets and certificates on app registrations and enterprise applications have expired or expire soon?

Every client secret and certificate on an app registration or enterprise application, with the time left before it expires. An expired credential silently breaks whatever integration uses it. Source: Microsoft Graph applications and servicePrincipals. Graph cannot filter on expiry, so all credentials are fetched and filtered here. What to do: expired credentials are usually already causing failures - check the owning app first. Certificates are listed alongside secrets; both stop an app-only integration when they lapse. A credential with no expiry date is rare and worth reviewing on its own.

Where in the appEntra ID › Security › App Credential Expiry
WorkloadEntra ID
KindTable
DataBuilt from the tenant data IntensiveReports keeps in memory and refreshes in the background, so it opens at once.
LicenceNo extra licence needed.
Report id (API and MCP)entra.security.app-credential-expiry
ColumnKeyType
ApplicationDisplayNameLink
Object typeOwnerObjectTypeText
CredentialCredentialTypeText
NameCredentialNameText
StatusExpiryStateStatus
ExpiresEndDateTimeDate
Days leftDaysUntilExpiryText
App IdAppIdText
FilterKey (API)On when the page opens
Show only expired or expiring within the expiry warning days (Settings)at-riskYes

Licence: No extra licence needed.

Application permissions on the IntensiveReports app registration (all permissions):

PermissionAPIWhat it allowsNote
Application.Read.AllMicrosoft GraphRead all applications
Data sources it reads
  • GET /v1.0/applications
  • GET /v1.0/servicePrincipals
GET /ir-api/v1/reports/entra.security.app-credential-expiry?size=100
GET /ir-api/v1/reports/entra.security.app-credential-expiry?filter=at-risk

An AI assistant reads it with the MCP tool get_report and the id entra.security.app-credential-expiry. The client needs the Read grant for Entra ID. See Using the API.