It reads through your own permissions
Retrieval runs on the same search lanes you can use, scoped by the session. There is no separate, wider path to the database.
It can only read what you can already open.
The assistant panel answers from our own workspace: documents, tasks, playbooks, companies, forms, automations and dashboards, retrieved through the same permission-filtered search you use yourself. Every answer labels the sources it read. It changes nothing on its own; a write becomes a proposal you approve.
Product example
This is the same visual component used by the authenticated app, rendered with deterministic sample data.
The real transcript, its citations and its saved history, running on sample sources.
Inert sample data · no network access
Preview ready
Highlights
Retrieval runs on the same search lanes you can use, scoped by the session. There is no separate, wider path to the database.
Sources are labeled S1, S2 and so on, and the prompt requires the answer to cite them. You can check a claim instead of trusting it.
A write becomes a saved proposal you approve, and the proposal expires after 15 minutes. Approval re-checks access and then runs the ordinary command.
Without a shared foundation, every team rebuilds these edge cases, differently.
A copilot that queries directly can surface a row the person asking was never allowed to see. One innocent question crosses a line nobody meant to cross. Retrieval here runs through the same checks as the rest of the workspace.
An answer with no sources reads like a guess, and one wrong answer costs the feature its credibility. Citing the exact records used turns a claim into something you can open and verify.
Give a model direct write access and one confident mistake edits a real record. Here the model can only propose. You approve, and then the normal command runs with its normal checks.
The mechanism end to end, as implemented in the repository.
The server decides who is asking
Your identity and active scope come from the session. Whatever the browser claims is ignored, and neither is ever placed in a prompt.
Context is gathered with permissions on
The context provider returns bounded excerpts you could already reach, each labeled as a source the answer must cite.
Answers stream with honest states
Streaming, complete, stopped or failed. An interrupted answer stays visibly partial instead of presenting itself as finished.
Writes wait for a yes
A write is stored as a proposal that expires in 15 minutes. Approving it re-checks access and runs the existing service with a stable mutation ID, so a retry cannot run it twice.
Engineering guarantees
The conversation in the preview is scripted, not live. The assistant reads only what workspace search covers, so meetings, decisions, objectives, campaigns and finance are outside its reach; Ask Growth Kit is the assistant for those. Answer quality is never something to take on trust.
The boundary above is code, not a claim. These files carry the contract:
src/modules/ai-copilot/MODULE.mdsrc/modules/ai-copilot/policy.tssrc/registries/commands.tsThese capabilities share contracts and boundaries with this one.
The docs describe the same contracts this page demonstrates.