From 4daf75ab9e82de3e3c4eb1a68f7687904069b64b Mon Sep 17 00:00:00 2001 From: bowenliang123 Date: Fri, 24 Jul 2026 09:45:47 +0800 Subject: [PATCH 1/3] web: reorder default permission options in Agent settings Align the Agent settings default-permission segmented control with the Composer toolbar order, arranging modes from safest (manual) to most permissive (auto). --- .changeset/web-agent-permission-order.md | 5 +++++ apps/kimi-web/src/components/settings/SettingsDialog.vue | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/web-agent-permission-order.md diff --git a/.changeset/web-agent-permission-order.md b/.changeset/web-agent-permission-order.md new file mode 100644 index 0000000000..8cdfe70443 --- /dev/null +++ b/.changeset/web-agent-permission-order.md @@ -0,0 +1,5 @@ +--- +"@moonshot-ai/kimi-code": patch +--- + +web: Reorder default permission options in Agent settings from safest to most permissive. diff --git a/apps/kimi-web/src/components/settings/SettingsDialog.vue b/apps/kimi-web/src/components/settings/SettingsDialog.vue index 181e4197eb..b2957ba719 100644 --- a/apps/kimi-web/src/components/settings/SettingsDialog.vue +++ b/apps/kimi-web/src/components/settings/SettingsDialog.vue @@ -85,7 +85,7 @@ const daemonEndpoint = serverEndpointLabel(); const backendLabel = computed(() => props.backend === 'v2' ? 'v2 (kap-server)' : 'v1 (server)', ); -const permissionModes = ['manual', 'auto', 'yolo'] as const; +const permissionModes = ['manual', 'yolo', 'auto'] as const; // Reuse the Composer's permission labels (status.permission*) so the // default-permission names stay in sync with the toolbar. const permissionLabelKey: Record<(typeof permissionModes)[number], string> = { From c3d3f40809c89113f795c3c8acc4cfd9997ee89b Mon Sep 17 00:00:00 2001 From: qer Date: Fri, 31 Jul 2026 13:20:08 +0800 Subject: [PATCH 2/3] web: reorder mobile permission cycle from safest to most permissive MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The mobile settings sheet still cycled manual → auto → yolo, jumping from the safest mode straight to the most permissive one on a single tap. Align the tap-to-cycle order with the Composer menu and Agent settings (manual → yolo → auto). --- .changeset/web-agent-permission-order.md | 2 +- apps/kimi-web/src/components/mobile/MobileSettingsSheet.vue | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.changeset/web-agent-permission-order.md b/.changeset/web-agent-permission-order.md index 8cdfe70443..4a08d1c443 100644 --- a/.changeset/web-agent-permission-order.md +++ b/.changeset/web-agent-permission-order.md @@ -2,4 +2,4 @@ "@moonshot-ai/kimi-code": patch --- -web: Reorder default permission options in Agent settings from safest to most permissive. +web: Reorder permission modes from safest to most permissive in Agent settings and the mobile permission cycle. diff --git a/apps/kimi-web/src/components/mobile/MobileSettingsSheet.vue b/apps/kimi-web/src/components/mobile/MobileSettingsSheet.vue index 229c933558..9e4109eceb 100644 --- a/apps/kimi-web/src/components/mobile/MobileSettingsSheet.vue +++ b/apps/kimi-web/src/components/mobile/MobileSettingsSheet.vue @@ -71,7 +71,9 @@ function onColorScheme(v: string): void { emit('setColorScheme', v as ColorScheme); } -const PERM_MODES: PermissionMode[] = ['manual', 'auto', 'yolo']; +// Tap-to-cycle order follows the same safest → most permissive progression +// as the Composer menu and Agent settings (manual → yolo → auto). +const PERM_MODES: PermissionMode[] = ['manual', 'yolo', 'auto']; // Identity is the model id — display/model names can collide across providers. const currentModel = computed(() => From 41eb00898907c7564dcde10f1329b8673782c9fa Mon Sep 17 00:00:00 2001 From: qer Date: Fri, 31 Jul 2026 13:22:52 +0800 Subject: [PATCH 3/3] web: align permission risk colors with the Composer's progression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both the desktop status panel and the mobile settings sheet mapped yolo → danger and auto → warning, the inverse of the Composer menu (yolo → warning, auto → danger). Since auto is the most permissive mode, it should carry the danger color everywhere. --- .changeset/web-agent-permission-order.md | 2 +- apps/kimi-web/src/components/chat/StatusPanel.vue | 5 +++-- apps/kimi-web/src/components/mobile/MobileSettingsSheet.vue | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.changeset/web-agent-permission-order.md b/.changeset/web-agent-permission-order.md index 4a08d1c443..9354bc4d3d 100644 --- a/.changeset/web-agent-permission-order.md +++ b/.changeset/web-agent-permission-order.md @@ -2,4 +2,4 @@ "@moonshot-ai/kimi-code": patch --- -web: Reorder permission modes from safest to most permissive in Agent settings and the mobile permission cycle. +web: Order permission modes from safest to most permissive across settings surfaces, and fix the swapped yolo/auto risk colors in the status panel and mobile settings. diff --git a/apps/kimi-web/src/components/chat/StatusPanel.vue b/apps/kimi-web/src/components/chat/StatusPanel.vue index 6d51e61485..3692db3134 100644 --- a/apps/kimi-web/src/components/chat/StatusPanel.vue +++ b/apps/kimi-web/src/components/chat/StatusPanel.vue @@ -52,10 +52,11 @@ function permLabel(p: PermissionMode): string { return t('status.permissionManual'); } +// Risk progression matches the Composer: yolo = warning, auto = danger. const permColor = computed(() => { const p = props.status.permission; - if (p === 'yolo') return 'var(--color-danger)'; - if (p === 'auto') return 'var(--color-warning)'; + if (p === 'yolo') return 'var(--color-warning)'; + if (p === 'auto') return 'var(--color-danger)'; return 'var(--color-text)'; }); diff --git a/apps/kimi-web/src/components/mobile/MobileSettingsSheet.vue b/apps/kimi-web/src/components/mobile/MobileSettingsSheet.vue index 9e4109eceb..6db85b54a2 100644 --- a/apps/kimi-web/src/components/mobile/MobileSettingsSheet.vue +++ b/apps/kimi-web/src/components/mobile/MobileSettingsSheet.vue @@ -96,10 +96,11 @@ const thinkingOptions = computed(() => const planOn = computed(() => props.planMode === true); const swarmOn = computed(() => props.swarmMode === true); +// Risk progression matches the Composer: yolo = warning, auto = danger. const permColor = computed(() => { const p = props.status.permission; - if (p === 'yolo') return 'var(--color-danger)'; - if (p === 'auto') return 'var(--color-warning)'; + if (p === 'yolo') return 'var(--color-warning)'; + if (p === 'auto') return 'var(--color-danger)'; return 'var(--color-text-muted)'; }); /** Permission sub-line, e.g. "manual · confirm every tool". */