Create a key
- Open the Erstan app.
- Select the target workspace.
- Open Settings -> API Keys.
- Click Create Key.
- Enter a descriptive name.
- Select scopes and, for task, document, or file scopes, the matching project and team allowlists.
- Copy the secret when it is shown.
Scopes
Agent access
There is no per-key agent allowlist. All agent scopes use the key creator’s current workspace, team, and agent permissions. Erstan rechecks membership and permissions on every request, so team or role changes take effect without rotating the key.agents:list and agents:run expose only the retained published version. The MCP authoring scopes are intentionally different: agents:read can inspect accessible drafts, and agents:write can create a draft in an accessible team. Updating and validating saved agents require both authoring scopes plus the creator’s normal edit permission.
Authoring keys should normally hold both agents:read and agents:write; scopes are exact and additive. MCP can validate and publish the exact current manageable draft with an opaque revision guard, but cannot archive or delete it. Add agents:run to use test_agent for a current-version-guarded Builder Preview run, and runs:read to poll that run. Published-agent execution remains separately gated by agents:run. Disabled agents remain authorable under normal permissions but cannot run through the published-agent path; archived agents cannot be authored. Removing the agent from the workspace or removing the creator’s access makes it unavailable to the key.
Allowed projects and teams
The task, document, and file scopes are gated by per-key allowlists (allowedProjectIds, allowedTeamIds):
tasks:executerequires at least one allowed project or team. A task is reachable only when its project or team is on the key’s allowlists.documents:readanddocuments:writerequire at least one allowed team. Documents are team-scoped, so project allowlists never grant document access.files:readandfiles:writerequire at least one allowed team. Files are team-scoped, so project allowlists never grant file access.
allowed_project_invalid, allowed_team_invalid) and missing allowlists (allowed_projects_or_teams_required, allowed_teams_required).
Key list and detail responses include the allowedProjectIds and allowedTeamIds arrays alongside the existing fields.