Permission Policies

Permission policies let organizations and users define fine-grained rules that classify tool execution requests as allow, deny, or ask. When a request matches an ask rule, the runtime records a pending approval and waits for user action before proceeding. Permission policies are evaluated by the Gizzi runtime and the Allternit API. They layer on top of organization RBAC and workspace membership.

Policy structure

A policy is a named ordered list of rules. Each rule can match on:

Pattern matching

Rules support glob-style patterns:

Rule evaluation

Rules are evaluated in order. The first matching rule wins. If no rule matches, the default action is allow. A rule matches only when every field that is present matches the request. For example, a rule with tool and file_path set matches only when both the tool and the file path match.

Example policy

This policy:
  • Asks before running any bash command.
  • Denies writing to /etc/*.
  • Asks before making HTTP requests to internal hosts.
  • Allows everything else.

Approval lifecycle

When a rule produces ask, the runtime creates a pending approval request with these fields: The request can be approved or denied through the runtime surface. Approved requests allow the tool to execute; denied requests return an error to the agent.

Configuring policies

Policies are typically configured in Gizzi Code settings or company-level configuration. The active policy is selected by name and merged from company and user config.

CLI example

Approval endpoints

Pending approvals are resolved through the runtime approval endpoints:

Error codes

Permission policy evaluation itself does not return HTTP errors. When a policy denies a request, the tool call fails with a permission-denied error. Approval endpoints may return: