diff --git a/ui/src/components/IssueRow.test.tsx b/ui/src/components/IssueRow.test.tsx
new file mode 100644
index 00000000..e5276c7f
--- /dev/null
+++ b/ui/src/components/IssueRow.test.tsx
@@ -0,0 +1,84 @@
+// @vitest-environment jsdom
+
+import { act } from "react";
+import { createRoot } from "react-dom/client";
+import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
+import { IssueRow } from "./IssueRow";
+
+vi.mock("@/lib/router", () => ({
+ Link: ({ children, className, ...props }: React.ComponentProps<"a">) => (
+ {children}
+ ),
+}));
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+(globalThis as any).IS_REACT_ACT_ENVIRONMENT = true;
+
+describe("IssueRow", () => {
+ let container: HTMLDivElement;
+
+ beforeEach(() => {
+ container = document.createElement("div");
+ document.body.appendChild(container);
+ });
+
+ afterEach(() => {
+ container.remove();
+ });
+
+ it("suppresses accent hover styling when the row is selected", () => {
+ const root = createRoot(container);
+ const issue = {
+ id: "issue-1",
+ identifier: "PAP-1",
+ companyId: "company-1",
+ projectId: null,
+ projectWorkspaceId: null,
+ goalId: null,
+ parentId: null,
+ title: "Inbox item",
+ description: null,
+ status: "todo",
+ priority: "medium",
+ assigneeAgentId: null,
+ assigneeUserId: null,
+ createdByAgentId: null,
+ createdByUserId: null,
+ issueNumber: 1,
+ requestDepth: 0,
+ billingCode: null,
+ assigneeAdapterOverrides: null,
+ executionWorkspaceId: null,
+ executionWorkspacePreference: null,
+ executionWorkspaceSettings: null,
+ checkoutRunId: null,
+ executionRunId: null,
+ executionAgentNameKey: null,
+ executionLockedAt: null,
+ startedAt: null,
+ completedAt: null,
+ cancelledAt: null,
+ hiddenAt: null,
+ createdAt: new Date("2026-03-11T00:00:00.000Z"),
+ updatedAt: new Date("2026-03-11T00:00:00.000Z"),
+ labels: [],
+ labelIds: [],
+ myLastTouchAt: null,
+ lastExternalCommentAt: null,
+ isUnreadForMe: false,
+ } as const;
+
+ act(() => {
+ root.render();
+ });
+
+ const link = container.querySelector("[data-inbox-issue-link]") as HTMLAnchorElement | null;
+ expect(link).not.toBeNull();
+ expect(link?.className).toContain("hover:bg-transparent");
+ expect(link?.className).not.toContain("hover:bg-accent/50");
+
+ act(() => {
+ root.unmount();
+ });
+ });
+});
diff --git a/ui/src/components/IssueRow.tsx b/ui/src/components/IssueRow.tsx
index f23736fa..bcb3f2b2 100644
--- a/ui/src/components/IssueRow.tsx
+++ b/ui/src/components/IssueRow.tsx
@@ -11,6 +11,7 @@ type UnreadState = "hidden" | "visible" | "fading";
interface IssueRowProps {
issue: Issue;
issueLinkState?: unknown;
+ selected?: boolean;
mobileLeading?: ReactNode;
desktopMetaLeading?: ReactNode;
desktopLeadingSpacer?: boolean;
@@ -27,6 +28,7 @@ interface IssueRowProps {
export function IssueRow({
issue,
issueLinkState,
+ selected = false,
mobileLeading,
desktopMetaLeading,
desktopLeadingSpacer = false,
@@ -48,8 +50,10 @@ export function IssueRow({
diff --git a/ui/src/pages/Inbox.tsx b/ui/src/pages/Inbox.tsx
index e84bf7ae..fc3ca0fa 100644
--- a/ui/src/pages/Inbox.tsx
+++ b/ui/src/pages/Inbox.tsx
@@ -1375,6 +1375,7 @@ export function Inbox() {
key={`issue:${issue.id}`}
issue={issue}
issueLinkState={issueLinkState}
+ selected={isSelected}
className={
isArchiving
? "pointer-events-none -translate-x-4 scale-[0.98] opacity-0 transition-all duration-200 ease-out"