permission

package
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 7, 2026 License: GPL-3.0 Imports: 1 Imported by: 0

Documentation

Overview

Package permission provides permission handling types for the Codex CLI.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Behavior

type Behavior string

Behavior represents the permission behavior for a rule.

const (
	// BehaviorAllow automatically allows the operation.
	BehaviorAllow Behavior = "allow"
	// BehaviorDeny automatically denies the operation.
	BehaviorDeny Behavior = "deny"
	// BehaviorAsk prompts the user for permission.
	BehaviorAsk Behavior = "ask"
)

type Callback

type Callback func(
	ctx context.Context,
	toolName string,
	input map[string]any,
	permCtx *Context,
) (Result, error)

Callback is called before each tool use for permission checking.

type Context

type Context struct {
	Suggestions []*Update // Permission update suggestions from CLI
}

Context provides context for tool permission callbacks.

type Mode

type Mode string

Mode represents different permission handling modes.

const (
	// ModeDefault uses standard permission prompts.
	ModeDefault Mode = "default"
	// ModeAcceptEdits automatically accepts file edits.
	ModeAcceptEdits Mode = "acceptEdits"
	// ModePlan enables plan mode for implementation planning.
	ModePlan Mode = "plan"
	// ModeBypassPermissions bypasses all permission checks.
	ModeBypassPermissions Mode = "bypassPermissions"
)

type Result

type Result interface {
	GetBehavior() string
}

Result is the interface for permission decision results.

type ResultAllow

type ResultAllow struct {
	Behavior           string         // "allow"
	UpdatedInput       map[string]any // Modified input parameters
	UpdatedPermissions []*Update      // Permission updates to apply
}

ResultAllow represents an allow decision.

func (*ResultAllow) GetBehavior

func (p *ResultAllow) GetBehavior() string

GetBehavior implements Result.

type ResultDeny

type ResultDeny struct {
	Behavior  string // "deny"
	Message   string // Reason for denial
	Interrupt bool   // Whether to interrupt the session
}

ResultDeny represents a deny decision.

func (*ResultDeny) GetBehavior

func (p *ResultDeny) GetBehavior() string

GetBehavior implements Result.

type RuleValue

type RuleValue struct {
	ToolName    string
	RuleContent *string
}

RuleValue represents a permission rule.

type Update

type Update struct {
	Type        UpdateType
	Rules       []*RuleValue
	Behavior    *Behavior
	Mode        *Mode
	Directories []string
	Destination *UpdateDestination
}

Update represents a permission update request.

func (*Update) ToDict

func (p *Update) ToDict() map[string]any

ToDict converts the Update to a CLI-compatible map.

type UpdateDestination

type UpdateDestination string

UpdateDestination represents where permission updates are stored.

const (
	// UpdateDestUserSettings stores in user-level settings.
	UpdateDestUserSettings UpdateDestination = "userSettings"
	// UpdateDestProjectSettings stores in project-level settings.
	UpdateDestProjectSettings UpdateDestination = "projectSettings"
	// UpdateDestLocalSettings stores in local-level settings.
	UpdateDestLocalSettings UpdateDestination = "localSettings"
	// UpdateDestSession stores in the current session only.
	UpdateDestSession UpdateDestination = "session"
)

type UpdateType

type UpdateType string

UpdateType represents the type of permission update.

const (
	// UpdateTypeAddRules adds new permission rules.
	UpdateTypeAddRules UpdateType = "addRules"
	// UpdateTypeReplaceRules replaces existing permission rules.
	UpdateTypeReplaceRules UpdateType = "replaceRules"
	// UpdateTypeRemoveRules removes permission rules.
	UpdateTypeRemoveRules UpdateType = "removeRules"
	// UpdateTypeSetMode sets the permission mode.
	UpdateTypeSetMode UpdateType = "setMode"
	// UpdateTypeAddDirectories adds accessible directories.
	UpdateTypeAddDirectories UpdateType = "addDirectories"
	// UpdateTypeRemoveDirectories removes accessible directories.
	UpdateTypeRemoveDirectories UpdateType = "removeDirectories"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL