Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions pkg/workflow/safe_outputs_permissions.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,14 +205,21 @@ func ComputePermissionsForSafeOutputs(safeOutputs *SafeOutputsConfig) *Permissio
// Handle id-token permission for OIDC/secret vault actions in user-provided steps.
// Explicit "none" disables auto-detection; explicit "write" always adds it;
// otherwise auto-detect from the steps list.
if safeOutputs.IDToken != nil && *safeOutputs.IDToken == "none" {
idToken := ""
if safeOutputs.IDToken != nil {
idToken = *safeOutputs.IDToken
}
switch idToken {
case "none":
safeOutputsPermissionsLog.Print("id-token permission explicitly disabled (none)")
} else if safeOutputs.IDToken != nil && *safeOutputs.IDToken == "write" {
case "write":
safeOutputsPermissionsLog.Print("id-token: write explicitly requested")
permissions.Set(PermissionIdToken, PermissionWrite)
} else if stepsRequireIDToken(safeOutputs.Steps) {
safeOutputsPermissionsLog.Print("Auto-detected OIDC/vault action in steps; adding id-token: write")
permissions.Set(PermissionIdToken, PermissionWrite)
default:
if stepsRequireIDToken(safeOutputs.Steps) {
safeOutputsPermissionsLog.Print("Auto-detected OIDC/vault action in steps; adding id-token: write")
permissions.Set(PermissionIdToken, PermissionWrite)
}
}

safeOutputsPermissionsLog.Printf("Computed permissions with %d scopes", len(permissions.permissions))
Expand Down
Loading