diff --git a/.changeset/fix-stuck-web-tooltip.md b/.changeset/fix-stuck-web-tooltip.md
new file mode 100644
index 000000000..9f9fc042b
--- /dev/null
+++ b/.changeset/fix-stuck-web-tooltip.md
@@ -0,0 +1,5 @@
+---
+"@moonshot-ai/kimi-code": patch
+---
+
+Fix web tooltips that could get stuck on screen when their trigger element is removed while open.
diff --git a/.changeset/trim-redundant-web-tooltips.md b/.changeset/trim-redundant-web-tooltips.md
new file mode 100644
index 000000000..ee1038b2d
--- /dev/null
+++ b/.changeset/trim-redundant-web-tooltips.md
@@ -0,0 +1,5 @@
+---
+"@moonshot-ai/kimi-code": patch
+---
+
+Trim redundant and incorrect tooltips in the web UI.
diff --git a/apps/kimi-web/src/App.vue b/apps/kimi-web/src/App.vue
index 48224498e..d89debde7 100644
--- a/apps/kimi-web/src/App.vue
+++ b/apps/kimi-web/src/App.vue
@@ -40,7 +40,6 @@ import type { AppConfig, ThinkingLevel } from './api/types';
import Button from './components/ui/Button.vue';
import IconButton from './components/ui/IconButton.vue';
import Icon from './components/ui/Icon.vue';
-import Tooltip from './components/ui/Tooltip.vue';
// Hydrate the server-transport credential (fragment token or sessionStorage)
// BEFORE the client connects, so the first REST/WS calls already carry it.
@@ -625,15 +624,13 @@ function openPr(url: string): void {
@update:width="sessionColWidth = $event"
/>
diff --git a/apps/kimi-web/src/components/ui/Tooltip.vue b/apps/kimi-web/src/components/ui/Tooltip.vue
index 8d097e44d..a120cbff3 100644
--- a/apps/kimi-web/src/components/ui/Tooltip.vue
+++ b/apps/kimi-web/src/components/ui/Tooltip.vue
@@ -2,11 +2,12 @@
+ the real trigger element, which also anchors the bubble, and re-attached if that
+ element is removed or replaced (so an open tooltip can never strand on screen).
+ The bubble is rendered through a body teleport so it escapes ancestor overflow
+ clipping, and positioned with flip + viewport clamping. Short text stays on one
+ line; long text wraps within `maxWidth` and is clamped to `maxLines` lines with
+ an ellipsis so the bubble never grows too tall. -->