diff --git a/ui/src/pages/AgentDetail.tsx b/ui/src/pages/AgentDetail.tsx
index f9d92dabe5..0d09353efd 100644
--- a/ui/src/pages/AgentDetail.tsx
+++ b/ui/src/pages/AgentDetail.tsx
@@ -1264,7 +1264,6 @@ export function AgentDetail() {
agent={agent}
companyId={resolvedCompanyId}
assignLabel="Assign Task"
- showRun={false}
showStatus={false}
canRunWithProviderTrace={canUseProviderTrace}
actionsDisabled={agentAction.isPending}
diff --git a/ui/src/pages/Agents.production.tsx b/ui/src/pages/Agents.production.tsx
index 8e519f538b..7ba12ed9e4 100644
--- a/ui/src/pages/Agents.production.tsx
+++ b/ui/src/pages/Agents.production.tsx
@@ -13,7 +13,6 @@ import { useSidebar } from "../context/SidebarContext";
import { queryKeys } from "../lib/queryKeys";
import { isPlatformManagedEnvironment } from "../lib/managed-sandbox-environment";
import { AgentStatusBadge, AgentStatusCapsule } from "../components/StatusBadge";
-import { AgentActionButtons } from "../components/AgentActionButtons";
import { MembershipAction } from "../components/MembershipAction";
import { StarToggle } from "../components/StarToggle";
import { EntityRow } from "../components/EntityRow";
@@ -442,22 +441,6 @@ export function Agents() {
- {/* Row actions mirror the agent detail page; stop the click
- from bubbling to the row link so buttons don't navigate.
- Hidden on mobile so the agent name keeps room to render. */}
-
{
- e.preventDefault();
- e.stopPropagation();
- }}
- >
-
-
({
@@ -357,6 +358,40 @@ describe("Agents", () => {
vi.clearAllMocks();
});
+ it.each([
+ ["streamlined", Agents],
+ ["production", ProductionAgents],
+ ] as const)("omits the action bar from %s agent list rows", async (_mode, AgentList) => {
+ mockAgentsApi.list.mockResolvedValue([
+ makeAgent({ name: "Alpha", status: "active" }),
+ makeAgent({ id: "agent-paused", name: "Paused agent", status: "paused" }),
+ ]);
+ root = createRoot(container);
+ await act(async () => {
+ root!.render(
+
+
+
+
+ ,
+ );
+ });
+ await flushReact();
+ await flushReact();
+ const listToggle = container.querySelector('button[aria-label="List view"]');
+ await act(async () => { listToggle?.click(); });
+ await flushReact();
+
+ for (const name of ["Alpha", "Paused agent"]) {
+ const row = findAgentRow(container, name);
+ expect(row).not.toBeNull();
+ expect(row?.getAttribute("href")).toMatch(/^\/agents\//);
+ expect(row?.querySelector('button[aria-label^="Open actions for"]')).toBeNull();
+ const buttons = Array.from(row?.querySelectorAll("button") ?? []).map((button) => button.textContent);
+ expect(buttons).not.toEqual(expect.arrayContaining([expect.stringMatching(/Assign Task|Run Heartbeat|Run with provider trace|Pause|Resume/)]));
+ }
+ });
+
it("shows the configured model beside the adapter on the all agents page", async () => {
root = createRoot(container);
await act(async () => {