Claude Platform Docs
API referenceSupport & configuration

IAM permissions for Claude Models on Google Cloud (Anthropic managed)

Look up Google Cloud IAM permissions, predefined roles, and audit log types for Claude Models on Google Cloud (Anthropic managed).

Claude Models on Google Cloud (Anthropic managed) uses Google Cloud IAM for access control. Every API route needs one permission from the claude.googleapis.com service. If the caller doesn't hold that permission, Google Cloud returns an HTTP 403 error. Three predefined roles bundle the permissions. For setup and authentication, see Claude Models on Google Cloud (Anthropic managed).

Service details

The following table describes the Google Cloud service for Claude Models on Google Cloud (Anthropic managed).

AttributeValue
Serviceclaude.googleapis.com
Where permissions are checkedA workspace or the Anthropic organization
Audit log typesData Access, Admin Activity
To turn on Data Access logs, see Monitoring and logging.

Grant roles on the Google Cloud project. For how projects, organizations, and workspaces relate, see Workspaces.

Permissions on this page are in the short form resource.verb, such as messages.create.

Predefined roles

The following table lists the predefined roles for Claude Models on Google Cloud (Anthropic managed).

RoleDisplay namePermissions
roles/claude.viewerClaude ViewerEvery get and list permission on workspace resources.
roles/claude.userClaude UserEverything in roles/claude.viewer, plus every other permission on workspace resources.
For example, messages.create, messages.countTokens, and environments.processWork.
roles/claude.adminClaude AdminEverything in roles/claude.user, plus the permissions checked on your Anthropic organization.
For example, externalKeys.* and usageAnalytics.list.

In the following tables, Admin, User, and Viewer stand for these three roles.

Permissions

The following tables list 68 permissions across 111 routes.

The get and list permissions are the read-only ones.

Unless a section says otherwise, each route's audit log type is Data Access.

roles/claude.viewer can't send messages or count tokens. Sending a message needs messages.create. Counting tokens needs messages.countTokens.

Some routes in the following tables might not be available to your organization. To check which features are available, see Feature support.

Messages

PermissionRolesRoutes authorized
messages.createAdmin, UserPOST /v1/messages
messages.countTokensAdmin, UserPOST /v1/messages/count_tokens

Message batches

PermissionRolesRoutes authorized
messageBatches.createAdmin, UserPOST /v1/messages/batches
messageBatches.getAdmin, User, ViewerGET /v1/messages/batches/{message_batch_id}
GET /v1/messages/batches/{message_batch_id}/results
messageBatches.listAdmin, User, ViewerGET /v1/messages/batches
messageBatches.deleteAdmin, UserDELETE /v1/messages/batches/{message_batch_id}
messageBatches.cancelAdmin, UserPOST /v1/messages/batches/{message_batch_id}/cancel

roles/claude.viewer can read batch results. messageBatches.get authorizes both reading a batch's metadata and downloading its results.

Models

PermissionRolesRoutes authorized
models.getAdmin, User, ViewerGET /v1/models/{model_id}
models.listAdmin, User, ViewerGET /v1/models

Files

PermissionRolesRoutes authorized
files.createAdmin, UserPOST /v1/files
files.getAdmin, User, ViewerGET /v1/files/{file_id}
GET /v1/files/{file_id}/content
files.listAdmin, User, ViewerGET /v1/files
files.deleteAdmin, UserDELETE /v1/files/{file_id}

roles/claude.viewer can download files. files.get authorizes both reading a file's metadata and downloading its content.

Skills

PermissionRolesRoutes authorized
skills.createAdmin, UserPOST /v1/skills
skills.getAdmin, User, ViewerGET /v1/skills/{skill_id}
GET /v1/skills/{skill_id}/versions
GET /v1/skills/{skill_id}/versions/{version}
GET /v1/skills/{skill_id}/versions/{version}/content
skills.listAdmin, User, ViewerGET /v1/skills
skills.updateAdmin, UserPOST /v1/skills/{skill_id}/versions
DELETE /v1/skills/{skill_id}/versions/{version}
skills.deleteAdmin, UserDELETE /v1/skills/{skill_id}

Creating or deleting a skill version needs skills.update, not skills.create or skills.delete.

Agents

PermissionRolesRoutes authorized
agents.createAdmin, UserPOST /v1/agents
agents.getAdmin, User, ViewerGET /v1/agents/{agent_id}
GET /v1/agents/{agent_id}/versions
agents.listAdmin, User, ViewerGET /v1/agents
agents.updateAdmin, UserPOST /v1/agents/{agent_id}
agents.archiveAdmin, UserPOST /v1/agents/{agent_id}/archive

You can archive an agent but not delete it.

Sessions

PermissionRolesRoutes authorized
sessions.createAdmin, UserPOST /v1/sessions
sessions.getAdmin, User, ViewerGET /v1/sessions/{session_id}
GET /v1/sessions/{session_id}/events
GET /v1/sessions/{session_id}/events/stream
GET /v1/sessions/{session_id}/resources
GET /v1/sessions/{session_id}/resources/{resource_id}
GET /v1/sessions/{session_id}/threads
GET /v1/sessions/{session_id}/threads/{thread_id}
GET /v1/sessions/{session_id}/threads/{thread_id}/events
GET /v1/sessions/{session_id}/threads/{thread_id}/stream
sessions.listAdmin, User, ViewerGET /v1/sessions
sessions.updateAdmin, UserPOST /v1/sessions/{session_id}
POST /v1/sessions/{session_id}/events
POST /v1/sessions/{session_id}/resources
POST /v1/sessions/{session_id}/resources/{resource_id}
DELETE /v1/sessions/{session_id}/resources/{resource_id}
sessions.archiveAdmin, UserPOST /v1/sessions/{session_id}/archive
POST /v1/sessions/{session_id}/threads/{thread_id}/archive
sessions.deleteAdmin, UserDELETE /v1/sessions/{session_id}

sessions.get authorizes reading the session, its event history and event stream, its resources, and its threads. As a result, roles/claude.viewer can read every session's full event history.

Other session operations need the following permissions:

  • Sending events: sessions.update
  • Adding, changing, or removing session resources: sessions.update
  • Archiving a thread: sessions.archive

Environments

PermissionRolesRoutes authorized
environments.createAdmin, UserPOST /v1/environments
environments.getAdmin, User, ViewerGET /v1/environments/{environment_id}
GET /v1/environments/{environment_id}/work
GET /v1/environments/{environment_id}/work/stats
GET /v1/environments/{environment_id}/work/{work_id}
environments.listAdmin, User, ViewerGET /v1/environments
environments.updateAdmin, UserPOST /v1/environments/{environment_id}
environments.archiveAdmin, UserPOST /v1/environments/{environment_id}/archive
environments.deleteAdmin, UserDELETE /v1/environments/{environment_id}
environments.processWorkAdmin, UserGET /v1/environments/{environment_id}/work/poll
POST /v1/environments/{environment_id}/work/{work_id}
POST /v1/environments/{environment_id}/work/{work_id}/ack
POST /v1/environments/{environment_id}/work/{work_id}/heartbeat
POST /v1/environments/{environment_id}/work/{work_id}/stop

roles/claude.user and roles/claude.admin include every permission that a self-hosted sandbox worker needs. environments.processWork authorizes these worker actions:

  • Polling for work
  • Acknowledging work items
  • Sending heartbeats for work items
  • Stopping work items
  • Updating work items

This permission is separate from environments.update. Reading the work queue and its statistics needs only environments.get.

Besides environments.processWork, a worker needs other permissions to run a session, such as sessions.get to read the session and its events, sessions.update to send tool results, and skills.get to download the agent's skills.

Vaults

Google Cloud records these routes in Admin Activity audit logs, except the route for vaults.verify, whose audit log type is Data Access.

PermissionRolesRoutes authorized
vaults.createAdmin, UserPOST /v1/vaults
vaults.getAdmin, User, ViewerGET /v1/vaults/{vault_id}
GET /v1/vaults/{vault_id}/credentials
GET /v1/vaults/{vault_id}/credentials/{credential_id}
vaults.listAdmin, User, ViewerGET /v1/vaults
vaults.updateAdmin, UserPOST /v1/vaults/{vault_id}
POST /v1/vaults/{vault_id}/credentials
POST /v1/vaults/{vault_id}/credentials/{credential_id}
DELETE /v1/vaults/{vault_id}/credentials/{credential_id}
vaults.archiveAdmin, UserPOST /v1/vaults/{vault_id}/archive
POST /v1/vaults/{vault_id}/credentials/{credential_id}/archive
vaults.deleteAdmin, UserDELETE /v1/vaults/{vault_id}
vaults.verifyAdmin, UserPOST /v1/vaults/{vault_id}/credentials/{credential_id}/mcp_oauth_validate

Credential operations need the following permissions:

  • Creating, changing, or deleting a credential: vaults.update
  • Archiving a credential: vaults.archive
  • Reading a credential: vaults.get
  • Checking a stored MCP OAuth credential: vaults.verify

With vaults.get, roles/claude.viewer can list a vault's credentials. Claude Models on Google Cloud (Anthropic managed) never returns a credential's secret fields. To learn more, see Authenticate with vaults.

Memory stores

PermissionRolesRoutes authorized
memoryStores.createAdmin, UserPOST /v1/memory_stores
memoryStores.getAdmin, User, ViewerGET /v1/memory_stores/{memory_store_id}
GET /v1/memory_stores/{memory_store_id}/memories
GET /v1/memory_stores/{memory_store_id}/memories/{memory_id}
GET /v1/memory_stores/{memory_store_id}/memory_versions
GET /v1/memory_stores/{memory_store_id}/memory_versions/{memory_version_id}
memoryStores.listAdmin, User, ViewerGET /v1/memory_stores
memoryStores.updateAdmin, UserPOST /v1/memory_stores/{memory_store_id}
POST /v1/memory_stores/{memory_store_id}/memories
POST /v1/memory_stores/{memory_store_id}/memories/{memory_id}
DELETE /v1/memory_stores/{memory_store_id}/memories/{memory_id}
POST /v1/memory_stores/{memory_store_id}/memory_versions/{memory_version_id}/redact
memoryStores.archiveAdmin, UserPOST /v1/memory_stores/{memory_store_id}/archive
memoryStores.deleteAdmin, UserDELETE /v1/memory_stores/{memory_store_id}

Memory store operations need the following permissions:

  • Reading the store, its memories, or its version history: memoryStores.get
  • Creating, changing, or deleting a memory: memoryStores.update
  • Redacting a memory version: memoryStores.update

Deployments

PermissionRolesRoutes authorized
deployments.createAdmin, UserPOST /v1/deployments
deployments.getAdmin, User, ViewerGET /v1/deployment_runs
GET /v1/deployment_runs/{deployment_run_id}
GET /v1/deployments/{deployment_id}
deployments.listAdmin, User, ViewerGET /v1/deployments
deployments.updateAdmin, UserPOST /v1/deployments/{deployment_id}
deployments.archiveAdmin, UserPOST /v1/deployments/{deployment_id}/archive
deployments.runAdmin, UserPOST /v1/deployments/{deployment_id}/run
deployments.pauseAdmin, UserPOST /v1/deployments/{deployment_id}/pause
deployments.unpauseAdmin, UserPOST /v1/deployments/{deployment_id}/unpause

Reading deployment runs needs deployments.get.

Dreams

PermissionRolesRoutes authorized
dreams.createAdmin, UserPOST /v1/dreams
dreams.getAdmin, User, ViewerGET /v1/dreams/{dream_id}
dreams.listAdmin, User, ViewerGET /v1/dreams
dreams.archiveAdmin, UserPOST /v1/dreams/{dream_id}/archive
dreams.cancelAdmin, UserPOST /v1/dreams/{dream_id}/cancel

Dreams is a research preview feature. To request access, see Dreams.

Encryption keys

Google Cloud records these routes in Admin Activity audit logs.

PermissionRolesRoutes authorized
externalKeys.createAdminPOST /v1/organizations/external_keys
externalKeys.getAdminGET /v1/organizations/external_keys/{external_key_id}
externalKeys.listAdminGET /v1/organizations/external_keys
externalKeys.updateAdminPOST /v1/organizations/external_keys/{external_key_id}
externalKeys.deleteAdminDELETE /v1/organizations/external_keys/{external_key_id}

These permissions manage your organization's encryption key registrations. Of the three predefined roles, only roles/claude.admin includes them.

Usage reports

PermissionRolesRoutes authorized
usageAnalytics.listAdminGET /v1/organizations/usage_report/messages

Of the three predefined roles, only roles/claude.admin includes usageAnalytics.list.

See also

Was this page helpful?