diff --git a/desktop/src/features/messages/ui/ChannelIntroBlock.tsx b/desktop/src/features/messages/ui/ChannelIntroBlock.tsx
index 98300acb3e2..76207cfd081 100644
--- a/desktop/src/features/messages/ui/ChannelIntroBlock.tsx
+++ b/desktop/src/features/messages/ui/ChannelIntroBlock.tsx
@@ -63,7 +63,10 @@ export function ChannelIntroBlock({
) : null}
{intro.actions?.length ? (
-
+
{intro.actions.map((action) => {
const hasDescription = Boolean(action.description);
diff --git a/desktop/tests/e2e/channels.spec.ts b/desktop/tests/e2e/channels.spec.ts
index 7da20334f30..21c2dcde551 100644
--- a/desktop/tests/e2e/channels.spec.ts
+++ b/desktop/tests/e2e/channels.spec.ts
@@ -1507,6 +1507,11 @@ test("empty channel shows intro actions", async ({ page }) => {
await expect(page.getByTestId("welcome-composer-guide-banner")).toHaveCount(
0,
);
+ // Horizontal scrolling creates a clipping context. The padded, offset row
+ // leaves space for the cards' focus rings without changing their alignment.
+ const introActions = page.getByTestId("message-channel-intro-actions");
+ await expect(introActions).toHaveCSS("padding-top", "4px");
+ await expect(introActions).toHaveCSS("padding-bottom", "4px");
await expectIntroActionCardLayout(page, "channel-intro-action-create-agent");
await expectIntroActionsShareRow(page, [
"channel-intro-action-create-agent",