Skip to content
Raw Markdown

Limits and errors

Every cap and every failure mode in one place, across the MCP server and the CLI.

Asking questions

Question timeout
5 minutes. A question that takes longer returns an error and closes the chat turn.
Result rows
Up to 100 rows inline, with truncated marking a capped result set. For more, narrow the question or ask for aggregates.
Zero rows
Not an error. The query ran and matched nothing.
Null results
The SQL was not executed. On a schema-only project that is always the case: see Connect a warehouse or upload DDL.
Not answerable
The approved plan cannot run against the current context or data. Retrying the same question will not help. See ask_question.
Model overloaded
When the model is briefly overloaded or rate-limited, the tool returns a plain-language message rather than a raw error. Retry in a moment.

MCP server

Source schema detail
get_source_schema details at most 20 tables per call. Call it again for more, or use cassis schema pull for a full local snapshot.
Error convention
Every tool reports a failure as an error key in place of its normal fields, rather than raising.
Roles
Reads need an active account in the project’s organization. update_issue_status needs the editor or admin role. Chats are author-only over MCP: an org admin can read a colleague’s chat in the web app but not through the server, and only the chat’s author can rate it with submit_feedback.
Idle sessions
A session with no activity for 30 minutes expires. A client that reconnects initializes a fresh session, so long-running agents are unaffected.
Credential expiry
Expired or revoked credentials return HTTP 401. OAuth clients re-run the flow automatically; an API key has to be replaced.
Unreachable project
Querying a project the authenticated user cannot access returns an error rather than an empty result.

CLI

CodeMeaning
0Success. For check, advisory warnings never change this. For test, every probe completed, whatever the outcome
1The thing failed on its own terms: validation findings, failed eval cases, a duplicate eval case, a case id that does not exist, a failed or stale schema plan, or verify stopping at a failing step
2Usage error: missing API key or project, no context directory, an unreadable file, a tree over the size limits, or context upload or schema push run outside a git checkout or with uncommitted context files
3Transport or API error: unreachable API, invalid key, inaccessible project, another run already active, out of credits, or a timeout
130Ctrl-C during eval run. The run is cancelled server-side
Tree size
Commands that send the local tree accept up to 20,000 context files (YAML plus domains/**/README.md) and 100 MB total, sized for roughly 10,000 modeled tables. Beyond that the CLI fails fast with exit 2 before uploading anything. If you hit it, check --base-path. On cassis-cli older than 1.5.1 the client stops at the previous ceiling of 2,000 files and 5 MB, whatever the server accepts.
DDL size
cassis schema plan, apply and push send the file inline, and the API rejects a DDL over 10 MB. A whole-warehouse export above that is planned schema by schema, which the commands handle: a file speaks only for the schemas it contains. See Review schema updates.
Eval run timeout
30 minutes by default, --timeout to change it. The run continues server-side if the CLI stops waiting.
Schema plan timeout
30 minutes for schema plan, apply and push, --timeout to change it. The plan keeps computing server-side, and cassis schema apply --plan <id> resumes the wait.
Probe duration
context test is one full agent run per question, roughly 30 to 90 seconds each.

Imports and publishing

Failure is safe
On malformed YAML or a missing required field, Cassis keeps its previous context. Nothing is half-imported.
Idempotence
Re-uploading identical content with the CLI creates no new version. A GitHub App merge that touches the context path always creates one, recording the merged commit.
Complete replacement
Every import and publish replaces the complete context. This is why a project should have one editing path: see Choose how your context is managed.

Failure-by-failure fixes for the git loop are in Troubleshoot git and publishing.