A cloud-based identity and access management service for securing user authentication and resource access
New Claims Matching Expression (Preview) federated credentials fail to create on any app/pattern, while pre-existing ones of the same type still work
Description
Creation of new Claims Matching Expression (Preview) federated credentials fails for the GitHub Actions issuer across every variation tested -different literal values, different wildcard positions, and two different app registrations, including a pattern copied verbatim from Microsoft's own documentation.
Meanwhile, pre-existing credentials of the same type, created previously on both app registrations, continue to function correctly.
Two possible explanations remain open (see Primary question below), and we haven't yet been able to isolate which one applies.
Environment
Tenant ID: (will provide privately if needed)
Application (client) ID: (will provide privately if needed)
App registrations tested: App-A, App-B - both already had pre-existing, working Claims Matching Expression credentials before this investigation began. No test has been performed yet against a completely fresh app registration with zero prior flexible credentials.
Issuer: https://token.actions.githubusercontent.com
Existing working credentials (created previously, still active)
App-A:
claims['sub'] matches 'repo:contoso-org/sample-repo*:environment:env-alpha'
claims['sub'] matches 'repo:contoso-org/sample-repo*:environment:env-beta'
App-B: at least one pre-existing working flexible credential (exact count/values TBD)
Tests performed (all fail identically)
| # | Test | Result |
|---|---|---|
| 1 | Same pattern shape as existing working credentials, new environment name, App-A | ❌ Fails |
| -------- | -------- | -------- |
| 1 | Same pattern shape as existing working credentials, new environment name, App-A | ❌ Fails |
| 2 | Same pattern shape, throwaway dummy value, App-A | ❌ Fails |
| 3 | Same pattern shape, different app registration (App-B) — note: App-B also had pre-existing flexible credentials, so this is not a zero-prior-credentials control | ❌ Fails |
| 4 | Wildcard moved to the environment segment instead of repo segment, literal repo name | ❌ Fails |
| 5 | Pattern copied directly from Microsoft's own documented example | ❌ Fails |
Error (identical for every failing attempt)
Failed to add federated credential. Error detail: The
FederatedIdentityCredential.ClaimsMatchingExpression.Value is invalid.
Rule exception: Expression configured for issuer
'https://token.actions.githubusercontent.com' either lacks all required
claims or contains unallowed claims. paramName:
FederatedIdentityCredential.ClaimsMatchingExpression.Value,
objectType: Microsoft.Online.DirectoryServices.Application
Sample Trace ID: 00857c72-ab71-4a3f-a211-2733db303300 Sample Correlation ID: b09fe026-0397-4756-ac4f-5003241720b0 Sample Timestamp: 2026-08-03 08:47:53Z
Primary question
Two competing explanations remain open, and we'd appreciate clarity on which (if either) applies:
Tenant/region eligibility changed - creation of new flexible federated credentials may no longer be enabled for this tenant, while previously-created ones remain grandfathered and continue to work.
An undocumented per-app or per-issuer limit on the number of wildcard/flexible credentials exists, and both App-A and App-B happened to already be at or near that limit - so new additions are rejected regardless of content.
We have not yet been able to test against a completely empty app registration (zero pre-existing flexible credentials) to cleanly separate these two theories, due to concerns about disrupting production workflows during isolation testing. If there's a way to check this from Microsoft's side (e.g., tenant Preview enrollment status, or any documented/undocumented per-app limits on claimsMatchingExpression credentials), that would help us confirm the cause without further production-side testing.