From 14cc9fb89106887377e0546ea08d5cc4ba64459d Mon Sep 17 00:00:00 2001 From: mika kuns Date: Sat, 25 Apr 2026 10:11:02 +0200 Subject: [PATCH] feat(settings): default permission mode to auto and surface it in UI Replaces "bypassPermissions" with "auto" as the default for new installs and adds "auto" as the first option in the settings dropdown. Existing rows keep their stored value; ClaudeArgsBuilder still maps the legacy "bypassPermissions" -> "auto" at dispatch time. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/ClaudeDo.Data/Models/AppSettingsEntity.cs | 2 +- src/ClaudeDo.Data/Repositories/AppSettingsRepository.cs | 2 +- .../ViewModels/Modals/SettingsModalViewModel.cs | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ClaudeDo.Data/Models/AppSettingsEntity.cs b/src/ClaudeDo.Data/Models/AppSettingsEntity.cs index a76baa4..dc92908 100644 --- a/src/ClaudeDo.Data/Models/AppSettingsEntity.cs +++ b/src/ClaudeDo.Data/Models/AppSettingsEntity.cs @@ -9,7 +9,7 @@ public sealed class AppSettingsEntity public string DefaultClaudeInstructions { get; set; } = string.Empty; public string DefaultModel { get; set; } = "sonnet"; public int DefaultMaxTurns { get; set; } = 100; - public string DefaultPermissionMode { get; set; } = "bypassPermissions"; + public string DefaultPermissionMode { get; set; } = "auto"; public string WorktreeStrategy { get; set; } = "sibling"; public string? CentralWorktreeRoot { get; set; } diff --git a/src/ClaudeDo.Data/Repositories/AppSettingsRepository.cs b/src/ClaudeDo.Data/Repositories/AppSettingsRepository.cs index ee843a4..e425585 100644 --- a/src/ClaudeDo.Data/Repositories/AppSettingsRepository.cs +++ b/src/ClaudeDo.Data/Repositories/AppSettingsRepository.cs @@ -36,7 +36,7 @@ public sealed class AppSettingsRepository row.DefaultModel = string.IsNullOrWhiteSpace(updated.DefaultModel) ? "sonnet" : updated.DefaultModel; row.DefaultMaxTurns = updated.DefaultMaxTurns; row.DefaultPermissionMode = string.IsNullOrWhiteSpace(updated.DefaultPermissionMode) - ? "bypassPermissions" : updated.DefaultPermissionMode; + ? "auto" : updated.DefaultPermissionMode; row.WorktreeStrategy = string.IsNullOrWhiteSpace(updated.WorktreeStrategy) ? "sibling" : updated.WorktreeStrategy; row.CentralWorktreeRoot = string.IsNullOrWhiteSpace(updated.CentralWorktreeRoot) ? null : updated.CentralWorktreeRoot; diff --git a/src/ClaudeDo.Ui/ViewModels/Modals/SettingsModalViewModel.cs b/src/ClaudeDo.Ui/ViewModels/Modals/SettingsModalViewModel.cs index 93dd519..ff4d775 100644 --- a/src/ClaudeDo.Ui/ViewModels/Modals/SettingsModalViewModel.cs +++ b/src/ClaudeDo.Ui/ViewModels/Modals/SettingsModalViewModel.cs @@ -15,7 +15,7 @@ public sealed partial class SettingsModalViewModel : ViewModelBase [ObservableProperty] private string _defaultClaudeInstructions = ""; [ObservableProperty] private string _defaultModel = "sonnet"; [ObservableProperty] private int _defaultMaxTurns = 100; - [ObservableProperty] private string _defaultPermissionMode = "bypassPermissions"; + [ObservableProperty] private string _defaultPermissionMode = "auto"; [ObservableProperty] private string _worktreeStrategy = "sibling"; [ObservableProperty] private string? _centralWorktreeRoot; [ObservableProperty] private bool _worktreeAutoCleanupEnabled; @@ -28,7 +28,7 @@ public sealed partial class SettingsModalViewModel : ViewModelBase public IReadOnlyList Models { get; } = new[] { "opus", "sonnet", "haiku" }; public IReadOnlyList PermissionModes { get; } = new[] - { "bypassPermissions", "acceptEdits", "plan", "default" }; + { "auto", "bypassPermissions", "acceptEdits", "plan", "default" }; public IReadOnlyList WorktreeStrategies { get; } = new[] { "sibling", "central" }; public string AppVersion { get; } = @@ -60,7 +60,7 @@ public sealed partial class SettingsModalViewModel : ViewModelBase DefaultClaudeInstructions = dto.DefaultClaudeInstructions ?? ""; DefaultModel = dto.DefaultModel ?? "sonnet"; DefaultMaxTurns = dto.DefaultMaxTurns; - DefaultPermissionMode = dto.DefaultPermissionMode ?? "bypassPermissions"; + DefaultPermissionMode = dto.DefaultPermissionMode ?? "auto"; WorktreeStrategy = dto.WorktreeStrategy ?? "sibling"; CentralWorktreeRoot = dto.CentralWorktreeRoot; WorktreeAutoCleanupEnabled = dto.WorktreeAutoCleanupEnabled; @@ -107,7 +107,7 @@ public sealed partial class SettingsModalViewModel : ViewModelBase DefaultClaudeInstructions ?? "", DefaultModel ?? "sonnet", DefaultMaxTurns, - DefaultPermissionMode ?? "bypassPermissions", + DefaultPermissionMode ?? "auto", WorktreeStrategy ?? "sibling", string.IsNullOrWhiteSpace(CentralWorktreeRoot) ? null : CentralWorktreeRoot, WorktreeAutoCleanupEnabled,