Prerequisites
- Control Plane
- YAML
- Golf Control Plane account with Admin role
- Server RBAC configured (Set Up Server RBAC)
- Groups synced from your identity provider
How it works
Capability RBAC extends server RBAC to control access to individual:- Tools - Functions the AI can call
- Prompts - Prompt templates
- Resources - Data sources
4-layer policy merge
Capability RBAC uses a 4-layer policy merge to determine access:| Layer | Where Configured | Purpose |
|---|---|---|
| 1. Organization | Control Plane > Settings > Policies | Base annotation defaults |
| 2. Gateway | Control Plane > Gateway > Policies | Override org defaults |
| 3. Annotation | From MCP server tool metadata | Selects which policy category applies |
| 4. Capability | Per-server capability overrides | Most specific per-tool rules |
Tool annotations
MCP servers provide annotations that describe each tool’s behavior. Golf Gateway uses these to apply the appropriate access policy automatically:| Annotation | Meaning | Default Policy |
|---|---|---|
readOnlyHint: true | Tool only reads data, no side effects | More permissive |
destructiveHint: true | Tool may delete or overwrite data | More restrictive |
| Neither | Tool behavior is unspecified | Configurable default |
Example: How annotations affect access
Example: How annotations affect access
With these organization defaults:When a user invokes a tool:
list_files(readOnlyHint: true) → Allowed for all usersdelete_file(destructiveHint: true) → Requires admin groupsend_message(no annotations) → Requires developers or admins
Enable capability RBAC
- Control Plane
- YAML
- Go to MCP Servers > select a server
- Navigate to the Policies tab > Permissions section
- Click Enabled to turn on capability RBAC
- Go to the Capabilities tab to view discovered tools, prompts, and resources
- Use Review Changes to review and approve pending capabilities
Configure annotation-based defaults
Set default access groups for each annotation category. These defaults apply to all capabilities that match the annotation.- Control Plane
- YAML
Organization-level defaults:
- Go to Settings > Policies
- Find the Capability RBAC section
- Configure default groups for each category:
- Read-only tools - Tools with
readOnlyHint: true - Destructive tools - Tools with
destructiveHint: true - Unspecified tools - Tools without annotations
- Read-only tools - Tools with
- Click Save
- Go to Gateways > select a gateway > Policies
- Find the Capability RBAC section
- Override organization defaults as needed (can only be more restrictive)
- Click Save
Configure per-capability overrides
For specific tools that need different access than their annotation category, configure per-capability overrides:- Control Plane
- YAML
- Go to MCP Servers > select a server > Capabilities tab
- Find the capability you want to restrict
- Click the capability row to expand details
- Click Edit Permissions
- Enable Custom Access to override annotation defaults
- Select allowed groups for this specific capability
- Click Save
Pending approval workflow
When capability versioning is enabled, new or modified capabilities require admin approval before becoming active:- Control Plane
- YAML
- Gateway discovers new tool/prompt/resource during connection
- Capability appears in the Capabilities tab with New or Changed badge
- Click Review Changes to see all pending capabilities
- Review the capability schema and intended behavior
- Click Approve All or approve individual changes
- Users can now access the approved capabilities
Complete example
Here’s a complete configuration showing all capability RBAC features:Verify capability RBAC
- Connect your MCP client (Claude Desktop, Cursor, etc.) to the gateway as an authorized user
- Ask the AI to list available tools - verify restricted tools are filtered from the response
- Try to use a restricted tool (e.g.,
delete_repo) - verify you receive an access denied error - Check audit log in Admin Portal > Logs / Sessions for the blocked request
Troubleshooting
- Tool not appearing: Check if capability versioning is enabled and the tool is pending approval
- Access denied with correct groups: Verify all layers (org, gateway, capability override) - access is the intersection of all
- Wildcard not matching: Patterns use prefix matching with
*, ensure your pattern is correct
Related guides
- Set Up Server RBAC - Server-level access control
- Golf Gateway Overview - Policy engine architecture