feat: add allowBypassPermissionsMode setting (#658)

* feat: add allowBypassPermissionsMode setting

Allow bypass permissions mode to appear in the mode list via
settings.json without requiring the --allow-dangerously-skip-permissions
CLI flag. The disableBypassPermissionsMode setting retains priority.

* fix: address Copilot review feedback on allowBypassPermissionsMode

- Security: read allowBypassPermissionsMode only from trusted settings
  sources (user/local/flag/policy), excluding projectSettings to prevent
  a malicious repo from enabling bypass mode
- UX: update error messages to reference the correct CLI flag
  (--allow-dangerously-skip-permissions) and the new settings option
- Tests: add schema validation tests for the new field
This commit is contained in:
Nourrisse Florian
2026-04-13 14:05:21 +02:00
committed by GitHub
parent 7c8bdcc3e2
commit 31be66d764
6 changed files with 58 additions and 3 deletions

View File

@@ -19,6 +19,7 @@ import {
getSettings_DEPRECATED,
getSettingsFilePathForSource,
getUseAutoModeDuringPlan,
hasAllowBypassPermissionsMode,
hasAutoModeOptIn,
} from '../settings/settings.js'
import {
@@ -936,9 +937,11 @@ export async function initializeToolPermissionContext({
const settings = getSettings_DEPRECATED() || {}
const settingsDisableBypassPermissionsMode =
settings.permissions?.disableBypassPermissionsMode === 'disable'
const settingsAllowBypassPermissionsMode = hasAllowBypassPermissionsMode()
const isBypassPermissionsModeAvailable =
(permissionMode === 'bypassPermissions' ||
allowDangerouslySkipPermissions) &&
allowDangerouslySkipPermissions ||
settingsAllowBypassPermissionsMode) &&
!growthBookDisableBypassPermissionsMode &&
!settingsDisableBypassPermissionsMode