entra-app

entra-app is a command for Claude Code from anthropics/financial-services. It costs 0 tokens per session (1,718 once invoked), scanned A, original, Apache-2.0.

A guide for registering an application in Microsoft Entra, Microsoft's identity and access service formerly called Azure Active Directory. The application lets a tenant control sign-in permissions and token access for certain add-in configurations.

In plain words
What is it for?
Use it to create a single-tenant Entra app, configure the permissions needed by a manifest, and support Outlook Graph access, private gateways, Foundry, or custom API resources.
Why use it?
Some cloud, gateway, or sovereign-cloud setups need tokens addressed to an organisation's own resource rather than Anthropic's shared application.

Command for Claude Code ✓ vendor

Written for Claude Code: shipped in a Claude Code plugin.

Part of the claude-for-msft-365-install plugin — 1 skill, 9 commands shipped together

Good fit Use it to create a single-tenant Entra app, configure the permissions needed by a manifest, and support Outlook Graph access, private gateways, Foundry, or custom API resources.

Compare 6 commands from other repositories ↓
Install with agentmods
npx agentmods add commands/anthropics/financial-services/entra-app
About the project

Claude for Financial Services is a collection of agents, skills, commands, plugins, and data connectors for investment banking, equity research, private equity, and wealth-management workflows. Financial professionals use it to draft models, memos, research notes, and reconciliations for review by qualified people. The catalogue contains components from these workflows, including agents, skills, plugins, commands, and instructions.

anthropics/financial-services · 34,727 stars · on GitHub

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/anthropics/financial-services

Made for: Claude Code.

Or install claude-for-msft-365-install, the plugin that ships this one along with the rest of its 1 skill, 9 commands.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for entra-app

README.md
[![agentmods](https://agentmods.dev/badge/commands/anthropics/financial-services/entra-app.svg)](https://agentmods.dev/commands/anthropics/financial-services/entra-app)
Your own site
<a href="https://agentmods.dev/commands/anthropics/financial-services/entra-app"><img src="https://agentmods.dev/badge/commands/anthropics/financial-services/entra-app.svg" alt="Measured on agentmods" height="20"></a>
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,718 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.01718
Opus 5 $0.00000 $0.00859
Sonnet 5 $0.00000 $0.00344
Haiku 4.5 $0.00000 $0.00172

Measured 8d ago against content hash 38b3db05b54b, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-07, from the pricing page.

Security

Grade A, and why

entra-app scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

claude-for-msft-365-install/commands/entra-app.md · 122 lines

How it starts

The opening of the file, as written. The whole thing — 122 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Register your own Entra app

Several manifest configurations require an Entra (Azure AD) app registration in your tenant rather than Anthropic's default multi-tenant app — because the token's aud must match a resource you control, or because your tenant is in a sovereign cloud where Anthropic's app doesn't exist. This page is the single set of registration steps; the per-feature docs link here and tell you which row of the permissions table applies.

You need this when setting any of:

Manifest key Why your own app
graph_client_id (Outlook) Graph permissions are consented against your app, not Anthropic's
entra_scope Access token must be audienced to your API resource
gateway_auth_source=entra Your gateway — or a Foundry resource — validates a token audienced to that resource
graph_cloudglobal Anthropic's app exists only in the commercial cloud

Register the app

In Entra admin centerApp registrationsNew registration. Single-tenant. The simplest topology is one app acting as both client (the add-in signs in as it) and resource (your backend validates tokens audienced to it); split into two if your policy requires.

1. Redirect URIs

AuthenticationAdd a platformSingle-page application → add both:

URI Used by
brk-multihub://pivot.claude.ai NAA broker — desktop Office and Outlook web. Missing this → AADSTS50011 at sign-in.
https://pivot.claude.ai/msal-redirect.html SPA fallback — Excel/Word/PowerPoint on Office for the web, which don't inject the NAA bridge.

Both go under the SPA platform (not Web, not Mobile/desktop).

2. Permissions / API setup

What you configure here depends on what the token is for:

Use case Configure
Outlook (Graph) API permissionsMicrosoft Graph → Delegated → Mail.ReadWrite, Calendars.Read, People.Read, User.Read, offline_access.
Gateway / bootstrap auth (entra_scope, gateway_auth_source=entra) Expose an API → set Application ID URI api://<app-guid>Add a scope (e.g. access_as_user, admin-consent enabled). Then API permissionsMy APIs → add that scope as a delegated permission (the app to itself, in single-app topology).
Foundry direct, keyless (gateway_auth_source=entra + azure_resource_name) API permissionsAzure Cognitive Services → Delegated → user_impersonation. No Expose an API step — the token is audienced to Azure's https://cognitiveservices.azure.com, not your own app, so set entra_scope=https://cognitiveservices.azure.com/.default. Also grant each user the Cognitive Services User role on the Foundry resource (Azure Portal → resource → Access control (IAM)).
Bedrock WIF (aws_role_arn) No API permissions needed — the ID token alone is the web identity.

Read the full file on GitHub · 122 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 122 lines · 0 tokens per session scan A 38b3db05b54b

Subscribe to this mod's changes

entra-app is a command published in the GitHub repository anthropics/financial-services (34,727 stars, last pushed 13d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 1,718 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.