Multi-Account
A single agent can use credentials from multiple teams. One agent authenticates once and uses the X-TAP-Team header to switch between teams.
Use Case
A developer has a personal team with their own API keys (OpenAI, GitHub) and works at a company that manages production credentials (Slack, Twitter). Without multi-account, they’d need two separate agents. With multi-account, one agent accesses both.
How It Works
- Home team — the team where the agent was created. Default when no
X-TAP-Teamheader is sent. - Linked team — a team that has invited the agent in. Access credentials by adding
X-TAP-Team: <team-id>to requests. - Role scope — the linking admin can restrict the agent to a specific role, limiting which credentials it can access.
Setup
- Create an agent in the home team (dashboard → Agents)
- Company admin links the agent into their team (dashboard → Agent Links), optionally scoped to a role
- Agent uses cross-team credentials by adding
X-TAP-Teamheader to requests
# Home team credential (no extra header)
curl -X POST $PROXY_URL/forward \
-H "X-TAP-Key: $AGENT_KEY" \
-H "X-TAP-Credential: openai" \
-H "X-TAP-Target: https://api.openai.com/v1/models"
# Linked team credential (add X-TAP-Team)
curl -X POST $PROXY_URL/forward \
-H "X-TAP-Key: $AGENT_KEY" \
-H "X-TAP-Team: <company-team-id>" \
-H "X-TAP-Credential: slack" \
-H "X-TAP-Target: https://slack.com/api/conversations.list"Security Model
- No credential visibility. Linked agents use credentials through the proxy but never see values.
- Role scoping. If the link specifies a role, the agent only accesses credentials in that role.
- Each team controls its own links. The linking team creates and removes links. The home team has no control over what’s exposed.
- Policies still apply. The linked team’s policies govern approval behavior for linked agents.
- Audit trail is team-scoped. Requests using a team’s credentials are logged in that team’s audit trail.
The X-TAP-Team Header
| Header | Required | Description |
|---|---|---|
X-TAP-Team | No | Team ID to resolve credentials against. Defaults to agent’s home team |
Agents can discover available teams via GET /agent/services.