Use Quick Responses (AI suggestions + snippets)
Quick Responses are the two fast-reply surfaces in Omniscio: AI suggestion chips, three generated short replies that appear above your input whenever an agent asks a question, and Snippets, your own saved canned responses with usage tracking and sort order. A Zap button sends a one-click preset. All three work in sessions, SMS and email.
What it is
Quick Responses are the two fast-reply surfaces in Omniscio: AI suggestion chips (three auto-generated short replies that appear above your input whenever an agent asks a question) and Snippets (your own saved canned responses with usage tracking and sort order). They share the same input toolbar so you never have to choose which one to use — the chips are Claude's three best guesses at the sub-100-char reply you're about to type, and snippets are the exact phrases you type over and over. There's also the Zap button (⚡) which sends your single one-click preset — the literal "yes, keep going" button for when the agent just needs you to say go. All three work in sessions, SMS threads, and email replies.
Where to find it
All three surfaces live in the message composer. The AI suggestion chips render in a fixed 120-pixel band below your input whenever an agent asks a question, and the Zap button (⚡) sits in the input toolbar — in sessions, SMS threads and email replies alike. Your saved snippets live in the Quick Replies virtual project in the sidebar, on the Quick replies tab, which is where you add, edit and reorder them; the Alt+S picker reaches the same library from the composer and from Quick Launch (Ctrl+Space). A few switches sit under Settings → Quick Replies (numbering direction, number-key quick send, and the blank-session confirm).
How it behaves
How to use it
- Let AI chips appear automatically. When an agent stops and asks a question, three short suggestion pills render in a fixed 120-pixel band below your input (generated by reading the last eight messages). Click one to send, or press Alt+1, Alt+2, or Alt+3 without touching your mouse.
- Use Zap for one-click "go". The ⚡ button sits in the input toolbar and sends your pre-configured Quick Reply phrase (default is your most common "keep going"-type reply). Shortcut: Alt+Z. Right-click the Zap button to edit the preset — the editor is a vertically-resizable textarea so the preset can be multiline; plain Enter inserts a newline, Ctrl/Cmd+Enter saves (matches the snippet editor's Body field), and any line breaks you save are preserved verbatim when Alt+Z fires. Blank-session guard: on a session you haven't talked to yet (no conversation), the Zap asks "Are you sure?" first — the bolt turns amber and a second click (or Alt+Z) actually sends — so a stray click can't fire your canned reply as the session's opening message (a real accident, since there's nothing to reply to). It guards only blank sessions; on an active chat one click still sends. A short built-in delay means a fast double-click can't blow straight through it. Turn it off at Settings → Quick Replies → "Confirm on a blank session" (on by default). The multi-model council composer's Zap gets the identical guard. Both entry points — the bolt and Alt+Z — go through the same gate (
handleQuickReplyin /src/renderer/src/features/sessions/useSessionPanel/useSessionSend.ts); the two-step state lives in /src/renderer/src/stores/quick-reply-confirm-store.ts, "blank" isisBlankConversationSession, and the behavior is locked by invariantblank-session-zap-confirmsin /.claude/memory/contracts/composer-toolbar-contract.md. - Save your own Snippets. Open the Quick Replies virtual project in the sidebar, switch to the Quick replies tab, and click + Add reply. Name it, type the response text, optionally flip Auto-submit when selected (sends immediately instead of just inserting). Drag to reorder — the top ones are what you see first. (Previously this was managed under Settings → Quick Responses; that panel was removed on 2026-05-20 and the sidebar virtual project is now the single home.)
- Pin a snippet to a specific engine & model (optional). In the reply's editor, open the Behavior tab → Advanced options and flip Run on a specific engine & model (off by default = use whatever the session is set to). The exact same engine/brain/model/thinking pickers you use when starting a new session appear — choose the harness, provider, model, and thinking level. When you fire that snippet on a fresh/empty session it runs on exactly what you pinned. When you fire it in a chat that's already going, it sends on that chat's current engine/model — a running chat can't switch engines mid-conversation — and shows a small note that the pin only applies to brand-new sessions. If the pinned engine isn't set up (or the model isn't available) you get a clear note and the message still sends on the default. A pinned snippet shows a small
Codex · GPT-5.6-style tag in the list.
- Pin a snippet to a specific engine & model (optional). In the reply's editor, open the Behavior tab → Advanced options and flip Run on a specific engine & model (off by default = use whatever the session is set to). The exact same engine/brain/model/thinking pickers you use when starting a new session appear — choose the harness, provider, model, and thinking level. When you fire that snippet on a fresh/empty session it runs on exactly what you pinned. When you fire it in a chat that's already going, it sends on that chat's current engine/model — a running chat can't switch engines mid-conversation — and shows a small note that the pin only applies to brand-new sessions. If the pinned engine isn't set up (or the model isn't available) you get a clear note and the message still sends on the default. A pinned snippet shows a small
- Trigger quick replies mid-conversation. Click the quick-reply menu icon in the input toolbar (or press Alt+S) and pick one. The picker opens at the root level — click a folder row to drill into it (horizontal slide animation; top bar shows back arrow + clickable breadcrumb). Search auto-flattens across every folder, prefixing each result with its breadcrumb so you can see where it lives. Organize without leaving the picker (desktop): drag any row to reorder it within the current level, drag it onto a folder to drop it inside, and right-click a folder — or empty space — to add a New folder in place (right-clicking a folder also offers "New folder inside …"); type the name in the inline box and press Enter. Dragging is a mouse gesture (it does nothing on touch — phones keep using the management UI and the right-click "Move to folder…" action), and it's off while a search is active. Quick replies insert the text into your input so you can edit before sending (unless auto-submit is on). The reply drops in at your cursor as its own paragraph — one blank line above it (when there's already text) and one blank line below — and the caret lands on the line beneath that lower blank line, so you keep typing in a fresh paragraph under the reply and it never runs into your other text. If your cursor sits in the middle of what you've typed, the trailing text moves down below the reply. (If the input was never focused — e.g. a restored draft you haven't clicked into — the reply appends at the end instead of jumping to the top.) When auto-submit is on there's no cursor to place, so the reply is simply joined onto any drafted text with the same single-blank-line separation and sent immediately. Use counts are tracked so the list self-sorts over time. The same Alt+S picker is also in the Quick Launch (Ctrl+Space) composer — drop a snippet into a brand-new session's prompt without opening that session first; an auto-submit snippet there starts the session immediately. See quick-launch-modal.md.
- Fire a reply — or open a folder — by number. With the picker open, each row (a reply or a folder) shows a small number badge — press 1–9 to fire that row instantly. A reply sends, honoring its own auto-submit-vs-edit setting exactly like clicking it (auto-submit ones send; the rest drop their text in for you to edit); a folder opens (drills into it), exactly like clicking it.
1is the bottom-most row in the current view, counting upward — the list opens scrolled to its end with that row highlighted, so the low numbers are the ones you see first. Prefer1at the top? Flip Settings → Quick Replies → Numbering direction to Top-down — then1is the top-most row, counting down, and the picker opens scrolled to the top so the numbered rows are the ones you see. Replies and folders share one sequence in display order (a folder just takes its place in the count); dividers are skipped, and only the bottom nine (or top nine in top-down) rows get a number — on a longer list it's the on-screen ones at the numbered end. Numbers describe what's on screen — open a folder and that folder's contents get numbered. By default they're positional, but you can pin a fixed number to a reply in its editor (Behavior tab → Number key); pins are global, so reusing a number moves it off the other reply (folders are positional only — they carry no pin), and a pinned number wins in either direction. The picker sorts by these numbers so the badges read in order — a pinned reply sits at its number's slot (1nearest the send box in bottom-up, or the very top row in top-down) and un-numbered replies / folders fill in at the other end. Prefer a numbered reply somewhere specific? Drag it there and it stays put — its badge then reads out of order, which is the deliberate override — and right-click → "Reset position" snaps it back to its number's slot. Your pinned numbers also show up in the Quick Replies management list — each pinned reply shows its number as a badge beside its name (only the numbers you set by hand, and only while the feature is on), so you can see and organize them to line up with the picker. Number keys fire only when the search box is empty (once you start typing a search the digits become part of your query, and the badges hide). Turn the whole feature off in Settings → Quick Replies → Number-key quick send (on by default). - Copy, edit, or delete — right in the picker. Right-click any quick reply in the Alt+S picker for Copy (copies its text to the clipboard), Edit (opens it in the Quick Replies editor), Delete, and — for a numbered reply you've dragged off its slot — Reset position (returns it to its number's place). Delete always asks first — a confirmation dialog (Remove "X"? You can undo with Ctrl+Z.) — and in the session composer it also drops an Undo toast (Ctrl+Z) that restores the reply exactly as it was (position, use count, folder, tags, pin). The Quick Launch (Ctrl+Space) picker has the same right-click Delete, but as a lighter inline two-step confirm (Delete → Confirm delete / Cancel) with no Undo — that floating window closes the moment it loses focus, so the confirm step is the safety net there instead. Deleting in one place refreshes the other picker automatically. Dividers are added in the management UI (
+ Divider); folders can be created either there (+ Folder) or directly in the Alt+S picker by right-clicking a folder/empty space (see step 4). Reordering and moving items into folders also works right in the picker by dragging (desktop) — or use the management UI / the right-click "Move to folder…" action. The picker's bottom Manage Quick Replies link jumps to the Quick Replies sidebar entry (the Quick replies tab pre-selected) for full library editing — no detour through Settings. From the Quick Launch (Ctrl+Space) picker it does the same, but first foregrounds the main window (that floating launcher is its own window, so the link hands you back to the app on the Quick Replies tab instead of just closing).
Attachments ride along
Anything you've attached to the composer — screenshots, PDFs, text docs — goes with the message no matter which of the three send paths fires it. Auto-submit snippet (Alt+S → pick → instant send), Zap (Alt+Z), and the regular Enter send all funnel through the same shared pipeline, so a screenshot pasted in before you tap Zap rides on that send the same way it would on a typed reply. If the send fails, the attachments come back: the chips reappear in the composer and the in-memory image cache restores so a retry doesn't make you re-attach. (Earlier builds dropped attachments silently on the snippet and Zap paths — fixed in 2026-04. Tests in tests/unit/hooks/useSessionPanel-drafts.test.ts under useSessionPanel — pendingImages flow through all three send paths lock this in.)
For agents
How it works
The three keyboard shortcuts — sendSuggestion1|2|3, quickReply, openQuickReplies — are declared in /src/shared/keybindings/core.keybindings.ts (shortcut declarations are no longer hand-maintained in keybindings.ts) and default to Alt+1/2/3, Alt+Z, Alt+S (re-mappable in Settings → Keyboard). The AI chip component is /src/renderer/src/components/ui/AiSuggestionChips.tsx — it mounts in /src/renderer/src/features/sessions/SessionPanel.tsx (and parallel mountings in the SMS and email viewers), shows an animated skeleton while Claude generates, flashes when you click one, and fires a usage IPC so the prefetcher can cache the next batch. Quick-reply CRUD goes through /src/main/db/queries-quick-replies.ts on the quick_replies table (renamed from response_snippets at migration v228; the table has no is_deleted column — deletes hard-delete) with columns: type ('snippet'|'divider'|'folder'), parent_id (nullable self-FK for nesting — migration v169), label, text, auto_submit, display_order, use_count, last_used_at. Right-click copy / edit / delete in the picker flows through the shared /src/renderer/src/components/ui/QuickReplyContextMenu.tsx — its optional onDelete renders a destructive Delete, and a per-item keepOpen flag powers the Quick Launch inline two-step confirm built by the pure /src/renderer/src/features/quick-launch/quick-launch-snippet-menu-items.ts. The composer's delete (QuickReplyComposerControl.tsx) opens a ConfirmDialog and registers a verbatim-restore Undo via QUICK_REPLY_RESTORE; the Quick Launch delete (QuickLaunchModal.tsx) calls QUICK_REPLY_DELETE directly with no undo. Behavior lock: /.claude/memory/contracts/quick-reply-delete-undo-contract.md. The Zap preset editor is /src/renderer/src/components/ui/QuickReplyEditPopover.tsx. The text math for dropping a reply into the composer — paragraph isolation, caret placement, and the auto-submit join — lives in the side-effect-free helper /src/renderer/src/lib/quick-reply-insert.ts (insertQuickReplyAtCursor for the insert-then-edit path, appendQuickReplyForSubmit for the auto-submit path), unit-tested in /tests/unit/lib/quick-reply-insert.test.ts; handleSelectQuickReply in /src/renderer/src/features/sessions/useSessionPanel/useSessionSend.ts reads the live textarea's selectionStart/selectionEnd and feeds them to that helper, then restores the returned caret offset after React re-renders. Rate-limit-aware AI generation, cheap-provider routing, and OAuth vs API-key dual paths are all handled by the shared AI suggestion service so chips gracefully fall back to a cheaper model when Claude is throttled. The Alt+S picker stays RAM-backed after its first load. Desktop still pre-warms the
whole library into /src/renderer/src/stores/quick-replies-store.ts
at app boot (two parallel list/tree IPCs). Web/mobile now boots with only a
tiny quick-reply lookup folded into the single WEB_BOOTSTRAP startup payload
the phone already fetches, so message-bubble latest-override logic is ready
immediately without dragging the entire picker library through mobile cold-load.
The full list/tree is then warmed in the background at idle right after boot (via
prefetchQuickReplyLibrary in /src/renderer/src/lib/mobile-prefetch.ts),
so the picker opens instantly on the phone without dragging that library through
cold-load; if it's opened before the warm lands it fetches on the spot as a
fallback. Either way it then stays in memory, and later edits stay current through the
QUICK_REPLIES_CHANGED push. (Behavior lock: /.claude/memory/contracts/quick-reply-picker-open-contract.md.) A snippet's optional engine/model pin (pinned_provider / pinned_model / pinned_thinking_level columns) is applied at fire time by applyQuickReplyEnginePin in /src/renderer/src/lib/quick-reply-engine-pin.ts: on a blank session it sets the session's engine/model (reusing the new-session picker's applyStartConfigToSession) before the first message spawns; on an in-progress session it leaves the engine unchanged and returns a note the composer shows. Behavior lock: /.claude/memory/contracts/quick-reply-engine-model-contract.md. Landing page: /docs/intro-sandbox/quick-responses.html — "When an agent asks a question, Claude reads the last eight messages of the conversation and generates three practical replies — each under 100 characters. You don't type. You click."
Related
- quick-launch-modal.md — the same snippets are reachable from the Quick Launch (Ctrl+Space) composer
- automations-and-auto-replies.md — Auto-replies rules can fire a snippet automatically
- Each snippet has optional auto-title + Plain Speak Latest-override toggles — see quick-replies.md.
- session-stuck-in-needs-you.md
Last verified 2026-09-28