Threads & Chat
Thread fails to load or shows a blank screen
Thread fails to load or shows a blank screen
- Start a new thread for your next question. Long threads are more expensive and less token-efficient.
- If you need to reference prior work, ask Ana to summarize the key findings and carry them into the new thread.
'Sandbox restoration in progress' error when sending a message
'Sandbox restoration in progress' error when sending a message
Broken image icons appear in a report instead of charts
Broken image icons appear in a report instead of charts
Playbooks
Playbook results are not posting to Slack
Playbook results are not posting to Slack
- Confirm the Slack integration is working by tagging @Ana in the selected channel.
- Make sure the playbook has the correct Slack channel configured in its delivery settings and that the playbook is NOT set as “channel context”.
- Verify that the Ana Slack bot has been invited to the channel.
Inconsistent playbook output from each run
Inconsistent playbook output from each run
- Workshop with Ana in a thread to get to your desired output format, then ask Ana to build a playbook and retain necessary SQL/Python code to reproduce the desired output format.
- Add in the playbook prompt “look at previous playbook reports and follow the same output format” once you achieve a desired format.
- Break complex reports into multiple focused playbooks, each covering a single domain.
- Consider building a TextQL dashboard for the underlying metrics, then running a playbook that reads from the dashboard for the narrative summary.
Dashboards
Dashboard cannot be reverted to previous version
Dashboard cannot be reverted to previous version
Ontology
Building an ontology programmatically
Building an ontology programmatically
- AI-assisted: Make sure Ontology Editor toggle is switched on before the start of the chat (optional to switch on auto-approve). Ask Ana to explore your connector’s foreign keys and create ontology objects and links based on the schema. Provide a prompt with your table list and domain context.
- Import/export existing Ontology: Ontologies can be exported and imported as JSON files, enabling version control via GitHub and programmatic manipulation.
- API-based: Use the TextQL API with a self-issued API key to create and manage ontology objects programmatically.
Ontology joins are not auto-establishing from a JSON import
Ontology joins are not auto-establishing from a JSON import
Transferring ontology to a new connector or a new environment
Transferring ontology to a new connector or a new environment
Users get ontology permission errors when editing playbooks or threads shared to them
Users get ontology permission errors when editing playbooks or threads shared to them
Organization Context & Ana Behavior
Ana is not following my organization context or GitHub context repo instructions
Ana is not following my organization context or GitHub context repo instructions

-
Use explicit, firm instructions in your context file:
ALWAYS access the GitHub context repo before running any query, EVEN IF you recognize table names in the user's prompt. - Avoid contradicting instructions across different context files.
- Keep context concise. Overly long context reduces Ana’s ability to follow specific instructions. If threads are hitting the maximum length banner, context size may be a contributing factor.
- Use an ontology for critical data routing rules. Ontologies provide a more structured and reliable way to guide Ana than free-text context. See Ontology Overview.
Setting up a GitHub repo for organization context
Setting up a GitHub repo for organization context
- Create a GitHub repo for your context files.
- Generate a Personal Access Token (PAT) with read access.
- Add the PAT in the Connectors > Env Vars section.
- Add a note in your organization context telling Ana to reference the repo.
Connectors & Data Sources
Default guardrails and limits on runtime
Default guardrails and limits on runtime
| Guardrail | Default Value |
|---|---|
| SQL execution timeout | 3 minutes per query |
| DDL schema introspection timeout | 30 seconds |
| Request lifecycle timeout | 5 minutes |
| Row cap per query | 2 million rows |
| Write protection | SELECT only (all DDL/DML blocked) |
| Query throttling | None (subject to your database’s limits) |
Managing connectors programmatically or rotating credentials at scale
Managing connectors programmatically or rotating credentials at scale
Ana is querying tables it should not have access to
Ana is querying tables it should not have access to
- Restrict at the database level: Review the role/user assigned to the connector and revoke access to any schemas or tables Ana should not see.
- Use Organization Context: Add instructions in the Context Library specifying which tables Ana should or shouldn’t use for certain questions. Note that LLM behavior is non-deterministic — context instructions guide but do not strictly enforce Ana’s behavior.
- Use an ontology for deterministic access control: Only fields explicitly defined as dimensions or measures are exposed to Ana. See Ontology Overview.
Connecting dbt docs or a dbt semantic layer to TextQL
Connecting dbt docs or a dbt semantic layer to TextQL
- Persist dbt docs to your data warehouse (e.g., BigQuery) and let Ana query them via an existing connector. This is the simplest path.
- Use the dbt Discovery API via a service token. Add the token in the “Env Vars” section of the Connectors page, and add a note in your organization context telling Ana when to reference it.
Connector failing with a 403 or authentication error
Connector failing with a 403 or authentication error
Connector test passes but Ana cannot query the data
Connector test passes but Ana cannot query the data

Oracle connector support
Oracle connector support
Jira / Atlassian connector support
Jira / Atlassian connector support
Roles & Permissions
Restricting a role to only access a specific connector
Restricting a role to only access a specific connector

- Set the connector to Restricted Access by clicking … > Manage Access on the connector.

- Add the specific role under Select roles to share with and set the permission level to Viewer.
Restricting which data fields Ana can access
Restricting which data fields Ana can access
- Ontology mode: Only fields marked as dimensions or measures are exposed to Ana. Remove or don’t add sensitive fields (e.g., password, SSN) as attributes. Alternatively, define the ontology object with a custom SELECT query that excludes sensitive columns.
- Text-to-SQL mode: Restrict the connector’s database user permissions at the database level, or use database views that exclude sensitive columns.
Understanding 'public' and 'private' role permissions
Understanding 'public' and 'private' role permissions
- Read/Write Public: The user can view or create conversations that have been intentionally set to public. All chats are private by default.
- Read/Write Private: The user can view all conversations, including other users’ private chats. This should be reserved for admin or security roles.
- RBAC overrides: If a chat is explicitly shared with a user, they can view it regardless of their public/private permissions.
API key returns 403 or 401 for a non-admin user
API key returns 403 or 401 for a non-admin user
- Ensure the user’s role has access to the connector (via the Connectors page share settings).
- If the user was recently changed from admin to member, allow up to 15 minutes for permission changes to propagate.
- As a workaround, temporarily make the user an admin, generate the key, then revert. The key will retain the permissions it was created with.
Generating an API key for a non-admin user
Generating an API key for a non-admin user
Sharing & Collaboration
Sharing permissions for threads, playbooks, and dashboards
Sharing permissions for threads, playbooks, and dashboards
Making a playbook view-only for certain users
Making a playbook view-only for certain users
- Set the playbook to Restricted Access.
- Add specific users or roles with Viewer access.
Exporting a user list from my organization
Exporting a user list from my organization
Authentication & SSO
Google Sign-In fails with 'Authentication failed'
Google Sign-In fails with 'Authentication failed'

- The account was originally created with one email and later switched to a different one.
- Google auth was never linked during initial setup.

Setting up SSO with Okta
Setting up SSO with Okta
Login redirects to console.textql.com/onboarding instead of the app
Login redirects to console.textql.com/onboarding instead of the app
OIDC
Identity provider error: access_denied - User is not assigned to the client application
Identity provider error: access_denied - User is not assigned to the client application

Pricing & ACU Consumption
ACU costs vary by LLM model
ACU costs vary by LLM model

- More powerful models tend to generate more tool calls per completion, which increases total tokens consumed and therefore cost per thread.
- The default model (Sonnet 4.6) is the most cost-efficient for most use cases.
- When testing a new model, start with shorter threads to gauge cost before committing to long analyses.
Getting a usage and spend report
Getting a usage and spend report
My organization is suspended due to insufficient credits
My organization is suspended due to insufficient credits
Off-topic questions consuming ACUs
Off-topic questions consuming ACUs
API & Documentation
Finding documentation for tenant-specific API endpoints
Finding documentation for tenant-specific API endpoints
/CreateApiKey, /ListRoles, /UpdateApiKey) are provisioned per organization and not listed in the public docs.Solution: Contact your TextQL account manager or email support@textql.com for documentation on tenant-specific endpoints. The public API reference is at docs.textql.com/api-reference.API calls return 401 after updating from 'ApiKey' to 'Bearer' auth header
API calls return 401 after updating from 'ApiKey' to 'Bearer' auth header
Authorization: ApiKey <key> to Authorization: Bearer <key>.Solution: Update all API calls to use the Bearer prefix instead of ApiKey. No changes to the key itself are needed.Retrieving role UUIDs for the /CreateApiKey endpoint
Retrieving role UUIDs for the /CreateApiKey endpoint
/CreateApiKey endpoint requires a role UUID, which is not visible in the TextQL UI.Solution: Use the ListRoles endpoint:{} with your API key in the Authorization: Bearer <key> header. The response will include all roles with their UUIDs.Data Storage & Security
Customer data storage and retention policy
Customer data storage and retention policy
Snowflake role handling in TextQL
Snowflake role handling in TextQL
USE ROLE switching within a single connection.Solution: Use Snowflake OAuth (user-level authentication via popup) for deployments where each user has their own Snowflake role. This allows per-user access control without creating a connector per role.VPC / Self-Hosted Deployments
'Error 321: [unavailable] failed to refresh cached credentials' when chatting with Ana
'Error 321: [unavailable] failed to refresh cached credentials' when chatting with Ana
DB migration pod is failing without logs
DB migration pod is failing without logs
Pseudonymizing user identifiers in telemetry
Pseudonymizing user identifiers in telemetry
member_id and identity_id UUIDs in the hosted Postgres database. These can serve as pseudonymous identifiers that cannot be used to identify users without direct database access.Solution: Contact TextQL support to discuss rewiring the console to display UUIDs instead of email addresses, and to review what telemetry data is sent from your deployment. Not applicable to cloud-hosted customers.Whitelisting multiple email domains for OIDC login
Whitelisting multiple email domains for OIDC login
ringteam.com in addition to amazon.com), a user with an email on that domain must be the one to add it. This is a security feature to prevent unauthorized domain claims.Solution: Invite a user from the new domain via the Settings page. Once they log in, they can add their domain to the OIDC configuration. If this creates a deadlock (the user can’t log in without the domain being whitelisted), contact support@textql.com to have the domain added directly in the database.VPC deployments using custom Anthropic/OpenAI endpoints
VPC deployments using custom Anthropic/OpenAI endpoints
Docker ImagePullBackOff errors causing TextQL downtime
Docker ImagePullBackOff errors causing TextQL downtime
ImagePullBackOff, the Docker credentials used to pull TextQL images may have expired.Solution: Contact TextQL support at support@textql.com for updated Docker credentials or the latest Helm chart. Apply the updated credentials and restart the affected pods.What domains need to be allowlisted for VPC network firewalls?
What domains need to be allowlisted for VPC network firewalls?
- Docker Hub — for pulling container images
- console.textql.com — for usage data reporting
- Any domains allowlisted in the TextQL proxy (e.g., codecommit for sandbox operations)
