diff --git a/frontend/src/app/components/quick-jump-button/quick-jump-button.component.html b/frontend/src/app/components/quick-jump-button/quick-jump-button.component.html
new file mode 100644
index 0000000..1597e8c
--- /dev/null
+++ b/frontend/src/app/components/quick-jump-button/quick-jump-button.component.html
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/frontend/src/app/components/quick-jump-button/quick-jump-button.component.scss b/frontend/src/app/components/quick-jump-button/quick-jump-button.component.scss
new file mode 100644
index 0000000..768186d
--- /dev/null
+++ b/frontend/src/app/components/quick-jump-button/quick-jump-button.component.scss
@@ -0,0 +1,38 @@
+// ============================================================================
+// Quick-Jump Button — M3 FilledTonalIconButton
+// ============================================================================
+// Per spec: 8% state layer overlay on hover/focus using
+// --color-surface-light with opacity.
+// ============================================================================
+
+.quick-jump-button {
+ // M3 FilledTonalIconButton base: secondary container background
+ // with on-secondary-container icon color. We rely on the M3 theme
+ // token values provided by Angular Material, but override the
+ // ripple/state-layer to use the 8% overlay pattern.
+
+ // M3 state layer — 8% overlay on hover/focus
+ // Using the project's custom surface-light token with opacity
+ &::after {
+ content: '';
+ position: absolute;
+ inset: 0;
+ border-radius: inherit;
+ background-color: var(--cc-on-surface, #E2E8F0);
+ opacity: 0;
+ transition: opacity 200ms cubic-bezier(0.2, 0, 0, 1);
+ pointer-events: none;
+ }
+
+ &:hover::after {
+ opacity: 0.08; // 8% state layer
+ }
+
+ &:focus-visible::after {
+ opacity: 0.08; // 8% state layer on focus
+ }
+
+ &:active::after {
+ opacity: 0.12; // 12% pressed state per M3 spec
+ }
+}
\ No newline at end of file
diff --git a/frontend/src/app/components/quick-jump-button/quick-jump-button.component.ts b/frontend/src/app/components/quick-jump-button/quick-jump-button.component.ts
new file mode 100644
index 0000000..7c2b397
--- /dev/null
+++ b/frontend/src/app/components/quick-jump-button/quick-jump-button.component.ts
@@ -0,0 +1,26 @@
+import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';
+import { MatButtonModule } from '@angular/material/button';
+import { MatIconModule } from '@angular/material/icon';
+import { MatTooltipModule } from '@angular/material/tooltip';
+
+/**
+ * Quick-Jump Button component for navigating to agent sessions.
+ *
+ * M3 FilledTonalIconButton style with 8% state layer overlay
+ * for hover/focus states. Emits a click event for parent-driven
+ * navigation.
+ *
+ * Per spec: arrow_forward icon, aria-label, tooltip.
+ */
+@Component({
+ selector: 'app-quick-jump-button',
+ standalone: true,
+ imports: [MatButtonModule, MatIconModule, MatTooltipModule],
+ templateUrl: './quick-jump-button.component.html',
+ styleUrl: './quick-jump-button.component.scss',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class QuickJumpButtonComponent {
+ /** Emitted when the button is clicked, signaling navigation intent. */
+ @Output() readonly jump = new EventEmitter();
+}
\ No newline at end of file