diff --git a/apps/web/hooks/domains/session/use-session-git-status.ts b/apps/web/hooks/domains/session/use-session-git-status.ts index 3b78f908a4..5528b210dd 100644 --- a/apps/web/hooks/domains/session/use-session-git-status.ts +++ b/apps/web/hooks/domains/session/use-session-git-status.ts @@ -96,12 +96,21 @@ export function useSessionGitStatus(sessionId: string | null) { } prevSessionIdRef.current = sessionId; - // Skip fetch if we already have status or already fetched for this session - const currentStatus = storeApi.getState().gitStatus.bySessionId[sessionId]; - if (currentStatus || hasFetchedRef.current) { + // Skip fetch if we already fetched for this session (and session hasn't changed) + // When session changed, always refetch to get the latest status even if cached + if (hasFetchedRef.current) { return; } + // If we haven't fetched yet and status already exists (e.g., from WebSocket), skip + if (!sessionChanged) { + const currentStatus = storeApi.getState().gitStatus.bySessionId[sessionId]; + if (currentStatus) { + hasFetchedRef.current = true; + return; + } + } + hasFetchedRef.current = true; fetchSnapshot(sessionId); }, [sessionId, connectionStatus, fetchSnapshot, storeApi]);