diff --git a/apps/desktop/src/app/shell/hooks/use-statusbar-items.tsx b/apps/desktop/src/app/shell/hooks/use-statusbar-items.tsx
index 753c3893bbd5..26a8a172632b 100644
--- a/apps/desktop/src/app/shell/hooks/use-statusbar-items.tsx
+++ b/apps/desktop/src/app/shell/hooks/use-statusbar-items.tsx
@@ -8,15 +8,18 @@ import { GatewayMenuPanel } from '@/app/shell/gateway-menu-panel'
import { Codicon } from '@/components/ui/codicon'
import { GlyphSpinner } from '@/components/ui/glyph-spinner'
import { useI18n } from '@/i18n'
-import { Activity, AlertCircle, Clock, Command, Hash, Loader2, Terminal, Zap, ZapFilled } from '@/lib/icons'
+import { Activity, AlertCircle, Clock, Command, CopyIcon, FolderOpen, Hash, Loader2, Terminal, Zap, ZapFilled } from '@/lib/icons'
import type { RuntimeReadinessResult } from '@/lib/runtime-readiness'
import { contextBarLabel, LiveDuration, usageContextLabel } from '@/lib/statusbar'
import { cn } from '@/lib/utils'
import { setGlobalYolo, setSessionYolo } from '@/lib/yolo-session'
+import { copyFilePath, revealFile } from '@/store/file-actions'
+import { revealFileInTree } from '@/store/layout'
import {
$activeSessionId,
$busy,
$connection,
+ $currentCwd,
$currentUsage,
$sessionStartedAt,
$turnStartedAt,
@@ -38,6 +41,13 @@ import type { StatusResponse } from '@/types/hermes'
import { CRON_ROUTE } from '../../routes'
import type { StatusbarItem, StatusbarSelectModifiers } from '../statusbar-controls'
+function workspaceLabel(cwd: string): string {
+ const normalized = cwd.replace(/[\\/]+$/, '')
+ const leaf = normalized.split(/[\\/]/).filter(Boolean).pop()
+
+ return leaf || cwd
+}
+
interface StatusbarItemsOptions {
agentsOpen: boolean
chatOpen: boolean
@@ -71,10 +81,12 @@ export function useStatusbarItems({
}: StatusbarItemsOptions) {
const { t } = useI18n()
const copy = t.shell.statusbar
+ const fileMenu = t.fileMenu
const activeSessionId = useStore($activeSessionId)
const terminalTakeover = useStore($terminalTakeover)
const yoloActive = useStore($yoloActive)
const busy = useStore($busy)
+ const currentCwd = useStore($currentCwd)
const currentUsage = useStore($currentUsage)
const gatewayRestarting = useStore($gatewayRestarting)
const sessionStartedAt = useStore($sessionStartedAt)
@@ -299,6 +311,39 @@ export function useStatusbarItems({
title: inferenceStatus?.reason || copy.gatewayTitle,
variant: 'menu'
},
+ {
+ hidden: !currentCwd,
+ icon: ,
+ id: 'workspace-cwd',
+ label: currentCwd ? workspaceLabel(currentCwd) : undefined,
+ menuItems: currentCwd
+ ? [
+ {
+ icon: ,
+ id: 'copy-workspace-path',
+ label: fileMenu.copyPath,
+ onSelect: () => void copyFilePath(currentCwd),
+ title: currentCwd
+ },
+ {
+ icon: ,
+ id: 'reveal-workspace-finder',
+ label: fileMenu.revealFileManager,
+ onSelect: () => void revealFile(currentCwd),
+ title: currentCwd
+ },
+ {
+ icon: ,
+ id: 'reveal-workspace-sidebar',
+ label: fileMenu.revealInSidebar,
+ onSelect: () => revealFileInTree(currentCwd),
+ title: currentCwd
+ }
+ ]
+ : undefined,
+ title: currentCwd || undefined,
+ variant: 'menu'
+ },
{
className: cn(
agentsOpen && 'bg-accent/55 text-foreground',
@@ -337,6 +382,10 @@ export function useStatusbarItems({
agentsOpen,
commandCenterOpen,
copy,
+ currentCwd,
+ fileMenu.copyPath,
+ fileMenu.revealFileManager,
+ fileMenu.revealInSidebar,
gatewayMenuContent,
gatewayClassName,
gatewayDetail,