Skip to main content

Troubleshooting & FAQ

Account & passkeys​

My passkey manager won't work / the app says it's unsupported. Your passkey derives your wallet keys, so it needs a manager that supports the WebAuthn PRF extension. Use 1Password, iCloud Keychain (iOS 18 / macOS 15+ in Safari), Windows Hello, or Google Password Manager. See Passkeys & your account.

I lost my device / my passkey is gone. Restore with your 24-word recovery phrase: choose Recover or migrate an account on the sign-in page, or Lost your passkey? on the lock screen. It creates a fresh passkey and moves your funds and history to it. Without the phrase there's no reset. See Recovery.

Can I use my account on another device or browser? Your passkey comes with you if your passkey manager syncs across devices. Your conversation history doesn't: it's stored encrypted on the device where the chat happened. Turn on syncing to keep every device up to date through a folder or storage bucket you own, or move history once with Back up chats and Restore from backup in Settings → Storage.

Syncing says it can't run in this browser. The folder option needs desktop Chrome or Edge. On Safari, Firefox, or a phone, use the storage bucket option instead — it works everywhere. On Brave, paste brave://flags/#file-system-access-api into the address bar, set File System Access API to Enabled, and relaunch Brave. See Folder sync in Brave.

Syncing says the browser refused to send the request. That's the bucket's CORS rule. A browser won't describe a CORS failure, so the message can't be more specific. Press Fix → on the card in Settings → Storage: it shows the rule to apply to the bucket, then runs the checks again. See When syncing pauses.

A chat I deleted came back. If you deleted it while that device wasn't syncing, and then connected it to a fresh folder or bucket, the deletion isn't carried across. Delete it again and it stays gone. See Syncing your chats.

I'm asked to unlock again after stepping away. That's the session lock — by default it locks after 30 minutes of inactivity. Adjust the timeout, or switch between Lock the session and End the session, in Settings → Session.

Funds & pricing​

I sent a deposit but my balance hasn't updated. On-chain deposits take a short time to confirm; the deposit dialog polls for it. ALGO deposits are converted to dollars first — you'll see a converting indicator while that runs. Card purchases and transfers from other chains go through the payment provider before they land, so they take longer. See Funding.

Why is my balance in dollars when I sent crypto? Your balance is held as USDC (dollars) so per-message pricing is stable. Anything you send is converted on the way in. See Funding → Auto-conversion.

How much does a message cost? The model picker shows each model's rate up front (all fees included), and every reply shows what it actually cost in its footer. A short exchange is usually a fraction of a cent. See Pricing.

I'm out of free messages. Free models are capped at 20 messages per 24 hours per account, counted from your first free message rather than from midnight, so the allowance comes back 24 hours after that message. The app tells you when. Switching to a paid model works immediately. See Pricing → Free models.

Can I get my money back out? Yes — withdraw USDC to any Algorand address at any time from the Deposit dialog. No minimums and no lockups; the balance is in a wallet you control. See Funding → Withdrawals.

Chatting​

My reply stopped early / I want to cut it off. Press the stop button (or Esc while it's streaming). You only pay for what was generated. See Chatting.

A long conversation got slower or pricier. Longer context costs more per message. When a chat gets long, ZeroSignal compacts earlier messages into a rollup behind a marker — click it to read the originals; nothing is lost. See Conversations → Long conversations.

A model I want isn't available, or shows as offline. The catalog is live, and the app probes operators continuously — offline or incompatible operators are flagged and skipped. Try another operator for the same model, or leave it on Auto. See Models & operators.

"This model's node doesn't currently have enough ALGO to pay network fees", or a banner saying the node serving your model "is temporarily short of the ALGO it needs to pay network fees". Each operator pays the small network fees of the requests it serves from its own account. When that account runs low, the app stops sending it requests until the operator tops it up, and a model only those operators serve drops out of the picker. You weren't charged, because nothing was sent. Pick another model or try again later; it comes back within about five minutes of the operator refilling. If Only use attested nodes is on, the message says so: only attested nodes were considered.

My document upload didn't attach as an image. Documents (PDF, DOCX, XLSX, TXT, Markdown, HTML, CSV) are read as text and added to your prompt, not attached as images. Only image files (PNG, JPEG, WebP, GIF) attach as images for vision models. See Chatting → Attaching files.

Privacy​

Is my chat history on your servers? No. History is stored encrypted on your device, and prompts are end-to-end encrypted to the node that answers them. We don't keep server-side copies. See Privacy & security.

The app refused to send a message about privacy/relays. By default, requests route through a relay to hide your IP address. If no eligible relay is available, the app fails closed: it won't send directly and expose your address. This is usually momentary; try again. See The operator network → Relays.

Using the proxy​

zs-proxy connect says the proxy isn't running. Start it first with zs-proxy proxy start, then run connect again — it needs to read the live endpoint and model list. See Quick start.

zs-proxy wallet login can't sign in: there's no account to choose. The browser sign-in uses an account you already have; it can't create one. Create your account at zerosignal.ai first (see Quick start), then run wallet login again.

The proxy or its service exits with "no wallet configured". With no wallet and no terminal to ask on (an OS service, a script, or piped input), the proxy stops instead of creating an empty wallet. Run zs-proxy wallet login in a terminal first. See Other ways to set up your wallet.

A request to the proxy fails with 402 wallet_unfunded. The proxy's wallet doesn't have enough balance (or prepaid reserve) to cover the request. If it's your chat-app account, add funds in the chat app; otherwise run zs-proxy fund. zs-proxy doctor shows exactly what's missing. See Wallet & funding.

My agent loop could drain my balance — can I cap it? Yes — set spend.daily_cap_usdc and/or spend.per_request_cap_usdc in the proxy's config. See Configuration.

My tool errors on a data: line it doesn't recognize. Some strict OpenAI clients parse every SSE data: line as a chat chunk and fail on the proxy's cost-breakdown frame. The proxy sends that frame only when the request carries an X-Zs-Usage-Frame header, so a plain OpenAI-compatible tool never sees it. If you're hitting this, your own code is sending that header. See Connecting AI tools → Seeing what you paid.

Still stuck?​

info

If something here didn't help, reach out — and if your build offers Help us debug in the sidebar (switched on under Settings → Developer), the diagnostics it collects stay on your device until you choose to share them.