/setup
Setup wizard — provision Vertex/Bedrock/Foundry/gateway, admin consent, generate manifest(s)
> /plugin marketplace add anthropics/financial-servicesHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/setup
Context preview
What this command does when you run it.
Setup wizard — provision Vertex/Bedrock/Foundry/gateway, admin consent, generate manifest(s)
Command definition
setup.mddescription: Setup wizard — provision Vertex/Bedrock/Foundry/gateway, admin consent, generate manifest(s)
Claude in Office — Direct Cloud Setup
You are walking an enterprise admin through configuring the Claude Office add-in to call their own cloud instead of Anthropic's API. The output is a customized `manifest.xml` they deploy via M365 Admin Center.
**Before anything else:** the setup log lives at `~/Desktop/claude-for-msft-365-install-setup.md` (resolve `~` for their platform). If it exists, read it first — you may be resuming a prior run and can skip completed steps. Start a new `## Run — <timestamp>` section and append each command and its captured output (IDs, URLs) as you go.
**Check for Node.js** — Steps 4 and 6 shell out to `node` and `npx`. Run `node --version`. If it's missing, **ask before installing** — it's their machine. If they say yes, `brew install node` (mac) / `winget install OpenJS.NodeJS` (win) / whatever their package manager is. If no, stop here.
**When capturing values from the admin** (IDs, URLs, secrets pasted back from a console) — don't use AskUserQuestion. That's a choice picker; they're holding a string. Just say "paste the Client ID when you have it" and read it from their next message. Use AskUserQuestion only for the actual branch points (gateway vs vertex, per-user vs org-wide).
Step 1 — How does the add-in reach Claude?
Ask this first, because it's the thing admins get wrong: **do you already run an LLM gateway (LiteLLM, Portkey, Kong, etc.)?**
- **Yes → `gateway`.** Even if the gateway routes to Vertex or Bedrock under
the hood — the add-in talks to *your gateway*, not to Google or AWS. You just need the gateway URL.
- **No → `vertex` or `bedrock`.** The add-in authenticates directly to the
cloud provider. Pick where your infra lives.
| Path | What it means | Provisioning | Manifest keys | |---|---|---|---| | `gateway` | Add-in → your gateway → (whatever) | None | `gateway_url` (+ `gateway_api_format` if not `/v1/messages`) | | `vertex` | Add-in → Google Vertex AI, directly | Google OAuth client | `gcp_project_id`, `gcp_region`, `google_client_id`, `google_client_secret` | | `bedrock` | Add-in → AWS Bedrock, directly | IAM OIDC provider + role | `aws_role_arn`, `aws_region` | | `foundry` | Add-in → Azure AI Foundry, directly | Foundry resource + API key | `azure_resource_name`, `azure_api_key` |
Bedrock and per-user config (bootstrap endpoint or extension attrs) need `entra_sso=1` — the add-in acquires the user's Entra ID token to authenticate those flows. See the Entra SSO section in [manifest](manifest.md).
Step 1b — Which Office apps?
Ask: **Excel/Word/PowerPoint, Outlook, or both?** Outlook is a separate manifest and has one extra prerequisite.
If they're deploying Outlook:
- **Bedrock is not currently supported for Outlook.** If they picked `bedrock`
in Step 1, Outlook is off the table for now — generate only the `office` manifest.
- **Microsoft Graph admin consent is required.** Run
[consent](consent.md#outlook--microsoft-graph-consent) — a Global Admin opens one URL and clicks Accept. Do this before generating the manifest so you can ask whether they're using Anthropic's app (no `graph_client_id` needed) or their own Entra app (capture `graph_client_id`).
Branch to the matching section below.
---
Vertex AI
1a. Prerequisites
Confirm with the admin:
- GCP project ID (they should know this)
- Region with Claude model quota (typically `us-east5`)
1b. Create the OAuth client
No `gcloud` command exists for this. Open the console link (substitute their project ID), walk them through, they paste back the client ID and secret.
> Open: `https://console.cloud.google.com/apis/credentials?project=<PROJECT_ID>` > → **Create Credentials** → **OAuth client ID** > - Application type: **Web application** > - Name: `Claude for Office` > - Authorized redirect URI: `https://pivot.claude.ai/auth/callback` > → **Create** → copy the **Client ID** and **Client Secret**
Enable the Vertex API while they're there:
gcloud services enable aiplatform.googleapis.com --project=<PROJECT_ID>
Capture: `gcp_project_id`, `gcp_region`, `google_client_id`, `google_client_secret`.
Continue to [Step 3](#step-3--decide-whats-org-wide-vs-per-user). Vertex uses Google OAuth, not Entra, so admin consent isn't needed unless you also opt into per-user config (in which case come back to Step 2 after deciding in Step 3).
---
Bedrock
1a. Prerequisites
Confirm with the admin:
- AWS account ID and a region with Claude model access (usually `us-east-1`)
- Their Azure tenant ID (from Entra admin center, or `az account show --query tenantId`)
- `aws` CLI configured against the target account
1b. Create OIDC provider + role
Three `aws iam` calls. The trust policy's `aud` condition is the security boundary — only tokens Azure minted for the Claude add-in can assume this role.
Substitute their tenant ID and region:
TENANT_ID="<their-azure-tenant-guid>"
CLAUDE_APP_ID="c2995f31-11e7-4882-b7a7-ef9def0a0266"
AWS_REGION="us-east-1"
ACCOUNT=$(aws sts get-caller-identity --query Account --output text)
ISSUER="login.microsoftonline.com/${TENANT_ID}/v2.0"
# OIDC identity provider. Thumbprint is required by the API; AWS validates
# major IdPs via its own trust store, but the param can't be omitted.
THUMBPRINT=$(openssl s_client -servername login.microsoftonline.com \
-connect login.microsoftonline.com:443 </dev/null 2>/dev/null \
| openssl x509 -fingerprint -sha1 -noout | cut -d= -f2 | tr -d ':')
aws iam create-open-id-connect-provider \
--url "https://${ISSUER}" \
--client-id-list "${CLAUDE_APP_ID}" \
--thumbprint-list "${THUMBPRINT}"
PROVIDER_ARN="arn:aws:iam::${ACCOUNT}:oidc-provider/${ISSUER}"
# Role with trust policy gated on aud.
aws iam create-role --role-name ClaudeBedrockAccess \
--assume-role-policy-document '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "AllRead more
description: Setup wizard — provision Vertex/Bedrock/Foundry/gateway, admin consent, generate manifest(s)
Claude in Office — Direct Cloud Setup
You are walking an enterprise admin through configuring the Claude Office add-in to call their own cloud instead of Anthropic's API. The output is a customized `manifest.xml` they deploy via M365 Admin Center.
**Before anything else:** the setup log lives at `~/Desktop/claude-for-msft-365-install-setup.md` (resolve `~` for their platform). If it exists, read it first — you may be resuming a prior run and can skip completed steps. Start a new `## Run — <timestamp>` section and append each command and its captured output (IDs, URLs) as you go.
**Check for Node.js** — Steps 4 and 6 shell out to `node` and `npx`. Run `node --version`. If it's missing, **ask before installing** — it's their machine. If they say yes, `brew install node` (mac) / `winget install OpenJS.NodeJS` (win) / whatever their package manager is. If no, stop here.
**When capturing values from the admin** (IDs, URLs, secrets pasted back from a console) — don't use AskUserQuestion. That's a choice picker; they're holding a string. Just say "paste the Client ID when you have it" and read it from their next message. Use AskUserQuestion only for the actual branch points (gateway vs vertex, per-user vs org-wide).
Step 1 — How does the add-in reach Claude?
Ask this first, because it's the thing admins get wrong: **do you already run an LLM gateway (LiteLLM, Portkey, Kong, etc.)?**
- **Yes → `gateway`.** Even if the gateway routes to Vertex or Bedrock under
the hood — the add-in talks to *your gateway*, not to Google or AWS. You just need the gateway URL.
- **No → `vertex` or `bedrock`.** The add-in authenticates directly to the
cloud provider. Pick where your infra lives.
| Path | What it means | Provisioning | Manifest keys | |---|---|---|---| | `gateway` | Add-in → your gateway → (whatever) | None | `gateway_url` (+ `gateway_api_format` if not `/v1/messages`) | | `vertex` | Add-in → Google Vertex AI, directly | Google OAuth client | `gcp_project_id`, `gcp_region`, `google_client_id`, `google_client_secret` | | `bedrock` | Add-in → AWS Bedrock, directly | IAM OIDC provider + role | `aws_role_arn`, `aws_region` | | `foundry` | Add-in → Azure AI Foundry, directly | Foundry resource + API key | `azure_resource_name`, `azure_api_key` |
Bedrock and per-user config (bootstrap endpoint or extension attrs) need `entra_sso=1` — the add-in acquires the user's Entra ID token to authenticate those flows. See the Entra SSO section in [manifest](manifest.md).
Step 1b — Which Office apps?
Ask: **Excel/Word/PowerPoint, Outlook, or both?** Outlook is a separate manifest and has one extra prerequisite.
If they're deploying Outlook:
- **Bedrock is not currently supported for Outlook.** If they picked `bedrock`
in Step 1, Outlook is off the table for now — generate only the `office` manifest.
- **Microsoft Graph admin consent is required.** Run
[consent](consent.md#outlook--microsoft-graph-consent) — a Global Admin opens one URL and clicks Accept. Do this before generating the manifest so you can ask whether they're using Anthropic's app (no `graph_client_id` needed) or their own Entra app (capture `graph_client_id`).
Branch to the matching section below.
---
Vertex AI
1a. Prerequisites
Confirm with the admin:
- GCP project ID (they should know this)
- Region with Claude model quota (typically `us-east5`)
1b. Create the OAuth client
No `gcloud` command exists for this. Open the console link (substitute their project ID), walk them through, they paste back the client ID and secret.
> Open: `https://console.cloud.google.com/apis/credentials?project=<PROJECT_ID>` > → **Create Credentials** → **OAuth client ID** > - Application type: **Web application** > - Name: `Claude for Office` > - Authorized redirect URI: `https://pivot.claude.ai/auth/callback` > → **Create** → copy the **Client ID** and **Client Secret**
Enable the Vertex API while they're there:
gcloud services enable aiplatform.googleapis.com --project=<PROJECT_ID>
Capture: `gcp_project_id`, `gcp_region`, `google_client_id`, `google_client_secret`.
Continue to [Step 3](#step-3--decide-whats-org-wide-vs-per-user). Vertex uses Google OAuth, not Entra, so admin consent isn't needed unless you also opt into per-user config (in which case come back to Step 2 after deciding in Step 3).
---
Bedrock
1a. Prerequisites
Confirm with the admin:
- AWS account ID and a region with Claude model access (usually `us-east-1`)
- Their Azure tenant ID (from Entra admin center, or `az account show --query tenantId`)
- `aws` CLI configured against the target account
1b. Create OIDC provider + role
Three `aws iam` calls. The trust policy's `aud` condition is the security boundary — only tokens Azure minted for the Claude add-in can assume this role.
Substitute their tenant ID and region:
TENANT_ID="<their-azure-tenant-guid>"
CLAUDE_APP_ID="c2995f31-11e7-4882-b7a7-ef9def0a0266"
AWS_REGION="us-east-1"
ACCOUNT=$(aws sts get-caller-identity --query Account --output text)
ISSUER="login.microsoftonline.com/${TENANT_ID}/v2.0"
# OIDC identity provider. Thumbprint is required by the API; AWS validates
# major IdPs via its own trust store, but the param can't be omitted.
THUMBPRINT=$(openssl s_client -servername login.microsoftonline.com \
-connect login.microsoftonline.com:443 </dev/null 2>/dev/null \
| openssl x509 -fingerprint -sha1 -noout | cut -d= -f2 | tr -d ':')
aws iam create-open-id-connect-provider \
--url "https://${ISSUER}" \
--client-id-list "${CLAUDE_APP_ID}" \
--thumbprint-list "${THUMBPRINT}"
PROVIDER_ARN="arn:aws:iam::${ACCOUNT}:oidc-provider/${ISSUER}"
# Role with trust policy gated on aud.
aws iam create-role --role-name ClaudeBedrockAccess \
--assume-role-policy-document '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "AllReference agents, skills, and data connectors for the financial-services workflows we see most — investment banking, equity research, private equity, and wealth management.
Other commands on financial-services.
- /access-policies
Build the access_policies value — the granular, IAM-shaped way to allow or deny add-in features
Open command - /bootstrap
Build the bootstrap endpoint — per-user MCP servers, skills, dynamic config
Open command - /consent
Azure admin consent URLs — one-time tenant approval for Entra SSO and Outlook Graph access
Open command - /debug
Diagnose deployment issues (stale config, connect failures, missing add-in)
Open command - /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
Open command - /export-data
Export a copy of a user's add-in chat history, skills, MCP registrations, and settings before a machine is rebuilt
Open command

