diff --git a/src/renderer/src/components/tab-bar/EditorFileTab.tsx b/src/renderer/src/components/tab-bar/EditorFileTab.tsx
index f0767e75277..f56d6410c24 100644
--- a/src/renderer/src/components/tab-bar/EditorFileTab.tsx
+++ b/src/renderer/src/components/tab-bar/EditorFileTab.tsx
@@ -123,9 +123,6 @@ export default function EditorFileTab({
className={`w-3.5 h-3.5 mr-1.5 shrink-0 ${isActive ? 'text-foreground' : 'text-muted-foreground'}`}
/>
)}
- {file.isDirty && (
-
- )}
)}
-
+ {/* Dirty dot and close button share the same slot to prevent tab width shift during auto-save.
+ When dirty: dot is shown, close button appears on hover (replacing the dot).
+ When clean: close button is shown normally (visible on active tab, on hover for others). */}
+