Ask about this page (floating screen-aware helper)
A floating, screen-aware chat helper: how to reveal it and open it, the first-use consent gate, exactly what gets captured from your screen and what never does, its private history, and why its chats stay out of the sidebar and inbox.
What it is
"Ask about this page" is a small floating chat popover that lets you ask Claude about whatever is currently on your Omniscio screen — "what is this session waiting on?", "summarize my inbox", "what does this setting do?" — without leaving the page you're on. It is non-blocking: there is no full-screen backdrop and no focus trap, so the page behind the popover stays fully clickable while the chat is open.
You open it from a button in the top bar (a sparkle icon, alongside Bookmarks and your account indicator), or with the keyboard shortcut Ctrl+J. The popover drops down from that button — anchored under the header and height-capped — so it never covers the chat composer at the bottom of the window. When you send your first question, Omniscio takes a snapshot of what's on screen and starts a real, full-capability Claude session in the background, pre-fed with that snapshot. Follow-up questions continue the same chat, and the on-screen snapshot is re-captured and re-attached on every message, so each turn reflects what you're looking at right then. Your typed message appears in the chat the moment you hit send — even the very first one, while that background session is still starting up — so the popover never looks empty or unresponsive while it spins up.
The conversation is persistent: re-opening the popover continues your most-recent chat, a New chat button starts a fresh one, and a History list reopens any past chat. These helper chats are deliberately kept out of the normal UI — they never appear in the projects sidebar, the unified inbox, the "Needs You" counter, or anywhere else. They live only in the popover.
This ships ON — the top-bar button and Ctrl+J work out of the box. If you don't want it, you can turn it off in one place (see "Turning it off" below); that hides the button and makes Ctrl+J do nothing, and turning it back on restores both. It is gated by Omniscio's unreleased-feature mechanism — see Omniscio’s unreleased-feature (“Lab”) gate.
Where to find it
Turning it off (and back on)
It is on for everyone by default, so there is nothing to enable. To remove it:
- Settings → Lab — turn the "Ask about this page" toggle OFF. That hides the top-bar button and makes Ctrl+J inert; the popover can never mount. Turn it back ON to restore all three.
AMC_SHOW_ASK_ABOUT_THIS_PAGE=1 remains available as a developer-only override that reveals the feature regardless of the toggle (you can't set environment variables on a packaged app, so this is for dev builds).
All the surfaces follow the same switch: the top-bar button, the Ctrl+J shortcut, and the popover itself. It is desktop-only — the top bar (and so the button) is hidden below the mobile breakpoint.
How it behaves
First-use privacy consent
The very first time you try to send a question, a one-time consent gate appears in place of the message box. It explains that the helper captures what's on your screen and sends it to Claude, and that your KMS / secrets vault and any region marked sensitive are never captured. You must click Accept & continue before the first capture+send can happen. Once accepted, the choice persists (it survives restarts and syncs to mobile like any setting) and the gate never shows again.
What gets captured — and what never does
When you send, Omniscio builds a compact text block describing your current screen and prepends it to your question. Which branch it uses depends on what you're looking at:
- A session — the session's name, status, and project, plus its last ~12 messages (each capped so one giant message can't dominate).
- The unified inbox — one line per visible inbox item (up to ~20), each tagged with its source.
- Anything else — the visible text of the main content panel, with a short label for the current view.
Three privacy protections are always in force:
- The KMS / Nothari vault is never captured. If the vault is the active surface, the helper substitutes a neutral placeholder and reads nothing from it.
[data-sensitive]regions are stripped out of any generic page scrape before the text is collected.- The captured text is wrapped in an explicit "untrusted data" block that tells the helper to treat it as a description of what you see — never as instructions to follow. This is a prompt-injection defense: text on your screen (a webview page, a pasted message) can't hijack the helper.
There is also a hard total size budget on the captured block, and the whole capture step is failure-proof — if anything goes wrong it returns a safe minimal block rather than throwing.
The attached context is sent to the helper but never shown in the chat — your message bubble displays only the question you typed; the captured snapshot rides along to Claude invisibly. You can preview exactly what will be attached: click the "Context from this page attached" chip above the message box to expand the snapshot before you send.
Your typed question (with surface ask_page) — and only the question, never the captured screen context — is also recorded to Omniscio's local help-question log so the owner can review what people ask. Same store and privacy model as the "Ask Omniscio" tab: see Ask Omniscio → Question log.
It's a real session — including approvals
The helper is not a lightweight one-shot. It is a real, full-capability Claude session running in its own scratch workspace (a dedicated __ask_page__ virtual project that resolves to a private folder under Omniscio's user-data directory — separate from the "Ask Omniscio" helper's workspace). That means it can decide to use a tool that needs your permission. When it does, the Allow / Deny approval is rendered inline in the popover — so a full-power helper never silently hangs waiting on a gate you can't see. The popover also shows a running cost for the chat in its footer.
Because it runs in its own scratch workspace, the helper cannot see or edit your real projects unless you explicitly move it there.
Persistent history
- Continue-on-open — opening the popover (button or Ctrl+J) re-binds your most-recent chat and reloads it, so you pick up where you left off.
- New chat — the message-plus icon in the header drops the current chat and starts fresh; the next question spawns a new background session.
- History — the clock icon opens this popover's private list of past chats (most-recent first); click any one to reopen it. This list deliberately bypasses the hide rule that keeps these chats out of the rest of the UI.
Why it's hidden from the sidebar / inbox
Every "Ask about this page" chat is a session, but it should never clutter your normal session lists. Omniscio tags each one with a permanent, status-independent marker so the sidebar, the unified inbox, the "Needs You" counter, and the Ask-Omniscio /state snapshot all skip it — even if it's mid-question or waiting on an approval (you reach that approval through the popover, not the inbox). Unlike the "silent recipe" hide, this marker never clears, so the chat stays popover-only for its whole life.
Relationship to "Ask Omniscio"
"Ask about this page" is a separate feature from "Ask Omniscio", with its own identity (__ask_page__ vs __ask_amc__), its own scratch workspace, and its own sessions. One difference matters for reliability: Ask Omniscio has an internal-API-key fallback so it works even when your account credentials are momentarily unavailable; "Ask about this page" does not — if your Claude credentials are missing it surfaces the normal "sign in again" message rather than billing an internal key.
Limitations
- Desktop only — no mobile surface yet.
- Experimental, on by default — turn it off via Settings → Lab if you don't want it.
- The vault is never readable through it — by design; this is not configurable.
For agents
Implementation pointers (for agents touching this code)
The full invariant list + the test enforcing each one lives in the feature contract: /.claude/memory/contracts/ask-page-contract.md. Read it before changing this feature. Key files:
- Popover store (open/close/newChat/selectSession/send, cache-pin lifecycle): /src/renderer/src/stores/ask-page-store.ts
- Popover view (reuses
MessageList+ComposerInput, sliced subscriptions, inline approvals): /src/renderer/src/features/ask-page/AskPagePopover.tsx - Top-bar button (gated, desktop-only; toggles + lazy-mounts the popover, which portals to
document.bodyand anchors under the header): /src/renderer/src/features/ask-page/AskPageToolbarButton.tsx - First-use consent gate: /src/renderer/src/features/ask-page/AskPageConsentGate.tsx
- Context capture (vault exclusion,
[data-sensitive]strip, untrusted-data delimiting, budget, never-throws): /src/renderer/src/lib/capture-visible-context.ts - Cache pin honored by both evictors: /src/renderer/src/stores/conversation-cache-evict.ts
- Ctrl+J routing (
openAskPage, gated): /src/renderer/src/hooks/useKeyboardShortcuts.ts - Top-bar wiring (renders the gated button as a trailing item next to the account indicator): /src/renderer/src/features/toolbar/AppToolbar.tsx — the popover is mounted by the button itself, not a global host (the old
AskPagePopoverHostinApp.tsxwas removed). - Permanent hide tag applied at session creation: /src/main/services/session/session-create.ts (
ASK_PAGE_SESSION_TAG) - Separate identity / spawnable / resolver: /src/shared/virtual-project-ids.ts, /src/shared/spawnable-project-path.ts, /src/main/services/claude-project.ts
- Spawn-cluster gating (MCP-off, system-prompt shim, NO internal-key fallback): /src/main/process/spawn-cluster-manager.ts, /src/main/process/spawn-build.ts (
ASK_PAGE_SYSTEM_PROMPT_SHIM) - Lazy project seeder + IPC: /src/main/services/ensure/ensure-ask-page-project.ts,
ASK_PAGE_ENSUREin /src/shared/ipc-channels/ai.ts - Registry entry + settings fields: /src/shared/unreleased-features.ts, /src/shared/types/settings/ai-features-settings.ts (
askAboutPageEnabled,askPageConsentGiven) - Tests: /tests/unit/lib/capture-visible-context.test.ts, /tests/unit/stores/ask-page-store.test.ts, /tests/unit/session-create-ask-page-tag.test.ts, /tests/unit/session-create-display-text.test.ts, /tests/unit/stores/session-store-evict-nonpool-popover-pin.test.ts, /tests/unit/stores/evict-oldest-protected.test.ts, /tests/unit/lint/silent-session-filter-coverage.test.ts, /tests/unit/renderer/ask-page/AskPagePopover.test.tsx, /tests/unit/renderer/ask-page/AskPageToolbarButton.test.tsx, /tests/e2e/ui/ask-page.spec.ts
Related
- Omniscio’s unreleased-feature (“Lab”) gate — how Omniscio hides in-development features until they ship; this feature is gated by that mechanism.
- asides.md — another way to ask a side question; asides fork the current session's transcript, whereas "Ask about this page" runs a separate screen-aware helper session.
- keyboard-shortcuts.md — Ctrl+J and the rest of Omniscio's shortcuts.
Last verified 2026-10-02