Self-hosted API gateway for Claude Code on Amazon Bedrock. Team API keys, per-user budgets, OIDC SSO, rate limiting, and an admin portal.
Claude for Excel and Claude for PowerPoint are Microsoft Office Add-ins that bring Claude into spreadsheets and presentations. When connected via Enterprise gateway, they route requests through CCAG to Bedrock — no Claude subscription required.
The Office add-ins are served from pivot.claude.ai and run inside a sandboxed iframe within Excel or PowerPoint. When you select “Enterprise gateway” during sign-in, the add-in sends requests to your CCAG instance instead of Anthropic’s API.
Office Add-in (pivot.claude.ai iframe)
→ HTTPS POST /v1/messages → CCAG → Bedrock
→ HTTPS GET /v1/models → CCAG (static model list)
The add-ins require two endpoints:
| Endpoint | Method | Purpose |
|---|---|---|
/v1/messages |
POST | Send messages (streaming and non-streaming) |
/v1/models |
GET | List available Claude models |
Both endpoints are included in CCAG. The /v1/models endpoint returns a static list of supported models in the Anthropic API format.
The add-ins run in a browser context from https://pivot.claude.ai, so cross-origin requests require CORS headers. CCAG allows origins matching https://claude.ai and https://*.claude.ai. No other origins are permitted.
The add-in sends the API token as a Bearer token in the Authorization header. Virtual keys (sk-proxy-...) are required — OIDC/SSO tokens are not supported because the add-in has no browser-based login flow for your identity provider.
Create a virtual key in the admin portal or via CLI:
ccag keys add office-user
https://ccag.example.com)sk-proxy-...)/v1/modelsOnce connected, use Claude in the add-in sidebar as normal. All requests route through your gateway to Bedrock.
For local testing, the gateway must be exposed over HTTPS. Use a tunnel:
# Cloudflare Tunnel (recommended — no interstitial page)
cloudflared tunnel --url http://localhost:8080
# Or ngrok (free tier shows an interstitial that blocks add-in requests)
ngrok http 8080
Use the generated HTTPS URL as the gateway URL in the add-in.
/v1/models returns a responseCheck the gateway logs for Bedrock errors:
docker compose logs gateway --tail 50
Common causes:
The add-in runs from https://pivot.claude.ai. CCAG’s CORS policy allows *.claude.ai origins. If you see CORS errors, verify you’re running a version of CCAG that includes the CORS layer (v1.1.0+).