Skip to main content

Help me improve BoltAI

For a bug report, please include the following information:

  • Your OS version.

  • Your BoltAI app version.

  • Are you a Setapp user.

  • The AI provider & model you’re using.

  • Steps to reproduce the issue.

  • The error message

Error preventing use

OS Version: macOS Tahoe 26.7.1 Intel BoltIAI version: 2.18.3 Build 95 Provider: Claude-opus-4-6 Switched providers to Claude-haiku-5-5 and same issue Updated to latest version of Bolt and now chat sessions are dropping after a couple of queries Error Anthropic returned this error: messages.9: tool_use ids were found without tool_result blocks immediately after: toolu_015LXvJR6P2KV8arL6a4NV4d, toolu_01FTY5JvcgVSDchBaPXRsLQt. Each tool_use block must have a corresponding tool_result block in the next message. Raw API response: {"type":"error","error":{"type":"invalid_request_error","message":"messages.9: tool_use ids were found without tool_result blocks immediately after: toolu_015LXvJR6P2KV8arL6a4NV4d, toolu_01FTY5JvcgVSDchBaPXRsLQt. Each tool_use block must have a corresponding tool_result block in the next message."},"request_id":"req_011CgXkYEThrrvPdCAz6JdbE"}

Search Imported Chats

Searching Chats only returns results from chats initiated within Bolt but not from imported chats. Screenshots illustrate the same search term for two identical prompts. Only the one run within BoltAI returns.

Enable tagging chats and filtering by tags

Summary Something I find myself reaching for frequently is the ability to assign custom tags/labels to chats, and to be able to filter the chat list by these tags. As a bonus, it would be nice to have such tags included in markdown chat exports. Problem As chat history grows, finding related conversations across different topics or projects becomes difficult using only keyword search or chronological browsing. Proposed Solution Chat Tagging: Allow assigning one or more tags to a chat (via sidebar context menu, chat settings, or inline header). Tag Filtering: Add a tag filter/selector in the sidebar or search bar to quickly narrow down chats by tag. Markdown Export Integration: BoltAI already uses YAML front matter for permalinks on export. Include the assigned tags directly in the front matter: --- title: macOS App Design permalink: "boltai://chat/..." tags: - SwiftUI - macOS - development --- This would make organizing workflows within the app much cleaner and integrate seamlessly with personal note systems (like Obsidian) upon export.

Sync via Apple CloudKit (private iCloud database) as an alternative to BoltAI Cloud

Hi, Thanks for BoltAI. Having the same chats on Mac, iPhone and iPad is great. A question and a suggestion: why not use Apple's CloudKit (https://developer.apple.com/icloud/cloudkit/), i.e. each user's private iCloud database, to sync BoltAI data, instead of or alongside BoltAI Cloud? From the v2 announcement, BoltAI Cloud runs on Supabase with row-level security, and end-to-end encryption covers API keys. That's a sensible design. It still means my conversations, which often contain sensitive personal and work material, are stored in readable form on a third-party server. For a privacy-focused app, that's the part I'm not comfortable with. What CloudKit would bring: Data stays in the user's own iCloud account. BoltAI never stores it, so there's no extra server to trust, secure, breach or be legally compelled to hand over. Real end-to-end encryption. With Advanced Data Protection turned on, CloudKit fields marked as encrypted (CKRecord.encryptedValues) and all CKAssets are end-to-end encrypted, with keys held only on the user's devices. No separate account. The Apple ID already signed in on the device is the identity. Storage counts against the user's iCloud plan rather than a quota you have to host and pay for, which could also lower your infrastructure costs. Native fit. BoltAI runs on Mac, iPhone and iPad, which is exactly CloudKit's ecosystem, and CKSyncEngine (macOS 14 / iOS 17) handles much of the sync plumbing. Thanks!

Chat input does not always receive focus when opened with a keyboard shortcut

Help me improve BoltAI For a bug report, please include the following information: macOS Tahoe 26.6.2 BoltAI 2.18.0 (build 92) I’m not a Setapp user. Openrouter As described below. No error message When I open the chat using my keyboard shortcut (Ctrl + Space), the text input field is not always focused automatically. Sometimes the cursor is already in the input field and I can start typing right away. Other times, the chat window opens but isn’t active, so I have to click the input field with the mouse before I can type. The cursor also behaves inconsistently: when I move it over the text input, it sometimes stays as an arrow instead of changing to the I-beam text cursor. It seems as though the input field may not be responding to mouse hover correctly.

Add up/down arrow key navigation to the agent list in Instant Chat Bar

Hi! I often use the Instant Chat Bar and the Command+Shift+A shortcut to bring up specific agents from a list. When the agent list pops up, unfortunately you can't select an agent using the up or down arrow keys on the keyboard; you have to either: click the agent's name manually with the mouse or type the agent's name and then press Enter. It would be great to add support for the up and down arrows so you can pick an agent from the list that way.

1

custom title generation prompt ineffective?

at least when using apple foundation models as the provider, the custom prompt for title generation appears to not be effective. just the first several words of the initial user turn are used for the title, instead.

justeninBug Reports23 days ago
1

Ability to specify endpoint provider for a model on OpenRouter

A lot of the coding extensions give a UI option to select the API-call-level variable of which provider you want: eg: novita-fp8, deepinfra-fp4, etc. This would be highly useful on Bolt as OpenRouter has the following non-ideal behavior when this variable is not set: 1) Flitting between different providers even with a heavy cache load. Today, four requests went to four different providers in immediate succession. 2) OpenRouter’s autorouting (or even what is possible by manually configuring guardrails) is limited and often leaves you with endpoints that are more expensive or with a worse quantization than is ideal. This is best solved by utilizing the API-call level config OpenRouter allows. This could be implemented with an optional “choose endpoint” in the model configuration, and/or the ability to switch endpoints in the right chat sidebar.

Delete all prior/preceding messages

You can select a message in a chat and delete all subsequent messages. I’d like to have a similar option to delete all prior messages.

Button to jump to beginning of chat

There’s a button to jump to the end of a chat. It would be great if there was a similar button to jump to the beginning of the chat — the very first message (such that older messages would automatically be added).

Give BoltAI a Real Knowledge Base, Not Just Document Dumping

Why I'm Writing This I use BoltAI for quick tasks, writing, and code help, and it's good at that. But I also run a personal knowledge base of over 1,100 Markdown documents — 491 YouTube video transcripts, a published book, legal case files, product research, and travel guides — and BoltAI can't touch it. The reason is simple: BoltAI doesn't do retrieval at all. When you attach a document, the whole thing gets stuffed into the context window. That works for a single short file. It breaks down completely the moment someone has a real knowledge base rather than a handful of documents, because there's no way to attach 1,100 files to a single chat, and no mechanism to find the two or three that actually answer a question. I've built a system from plain files and SQLite that finds the right document out of that 1,100 and answers correctly almost every time. Nothing in it is exotic. Most of it would translate directly into BoltAI. Here's how it works and what I'd suggest you build. How My System Works (The Reference Architecture) The core idea: retrieval and context are two different jobs. Search finds the right document. The full document — not a chunk of it — is what goes to the model. The setup: One folder, plain Markdown, as the source of truth. Every piece of knowledge is a structured .md file in a numbered folder hierarchy. No proprietary format, no lock-in. YAML frontmatter on every file. Each document carries kb_id, title, domain, and tags. These are first-class retrieval signals, not decoration. A query about "Simpson Desert tyre pressure" matches on domain and tags before any embedding maths happens. A database that stores complete documents. A local SQLite database holds every document in full — title, full text, metadata, one row per document. It rebuilds from the files every 2 hours via upsert, so it never drifts and never duplicates. A cloud copy (Supabase) adds vector embeddings for semantic search. Universal ingest with a complete internal scrape. Anything can be dropped in: PDF, Word, plain text, email, web page, video. Videos are transcribed with Whisper into one MD file per video. PDFs and other documents are converted into a complete structured text representation — the full content, restructured with headings, not a sampled extract. The original goes to archive; the complete text version lives in the knowledge base forever. Hybrid search over a section index, full documents in context. The index knows about 11,700+ sections across the documents and searches them with combined lexical (BM25) and semantic scoring. Sections are only signposts. When the model answers, it reads the entire matched document. Used with Claude, this setup finds the right information across 1,100+ documents with an accuracy BoltAI has no way to approach today — not because BoltAI's model is worse, but because it never gets to see the right document in the first place. Where BoltAI Falls Short Today BoltAI's document handling is attach-and-dump: the full content of whatever you attach goes into the prompt. There's no index, no search step, no concept of "which of my documents is relevant to this question." That's fine for one document. It's not a knowledge base feature — it's a paste-a-file feature with extra steps. Ask BoltAI "summarise what I've written about the Simpson Desert" or "what tyre press

In Progress

Bolt Hangs

Hello, Any idea why Bolt Ai now constantly hangs when using my Ai workflow shortcut for text and spelling correction?? Cheers Stefan

In QA

Silent failures with Opus 5

Hi, I keep finding that Opus 5 requests fail silently. I put in a fairly long prompt, hit enter, it goes away thinking for awhile, then just stops. No response, no error, no nothing. Refreshing the prompt tends to create the same effect. If I switch to an OpenAi model, it then works. v 2.15.0 (build 84) on macOS 26.5.2

10
In QA

web_fetch server_tool_use block sent without its tool_result → Anthropic 400 on next turn

OS version: macOS 26.6 BoltAI app version: 2.15.0 Setapp user: No AI provider & model: Anthropic, Claude (extended thinking on, web_fetch tool enabled) Steps to reproduce: Start an Anthropic chat with the web_fetch server tool enabled. Ask something that makes the model call web_fetch, and let it also emit regular tool_use blocks in the same assistant turn. Continue the conversation for at least one more turn. Error message: messages.1: web_fetch tool use with id srvtoolu_01RYeaAtRGtJzhpnvMWP8ys7 was found without a corresponding web_fetch_tool_result block What's actually wrong: When BoltAI rebuilds the messages array for the follow-up request, the web_fetch_tool_result block belonging to the MOST RECENT server_tool_use is dropped. Earlier web_fetch calls in the same thread are paired correctly — only the latest one loses its result. Once another turn is appended after it, that server_tool_use is a permanent orphan in the history and every subsequent request 400s. The chat is unrecoverable without editing history. Note on the error text: Anthropic reports the wrong index. It says "messages.1" but the id it quotes belongs to a much later assistant message. Match by block id, not by the index in the message. Expected: the web_fetch_tool_result is persisted alongside its server_tool_use and replayed in every subsequent request. Note: the 2.15.0 changelog entry about "Anthropic-powered chats occasionally failing after tool calls when using extended thinking" does not fix this — I'm on 2.15.0 and still hitting it.

Can I dictate in Chinese?

Is there any way to do that, whether on a local model or via API to other providers?

iOS App doesn't send image properly to llama-server

I share the same extract text from image prompt for gemma4 from macOS and iOS, but iOS never “gets” the file.

Allow Ollama provider to support Ollama Cloud directly

Currently I have added Ollama Cloud to BoltAI 2 as a custom OpenAI provider, howevr it would be nice (cosmetically) if the endpoint https://ollama.com could be added to the Ollama provider, along with an API key so that the Ollama icon is used.

Add support for Cursor API

https://cursor.com/en-US/docs/cloud-agent/api/endpoints#create-an-agent describes how to access the Cursor via API-Key. Yet we’re not able to access their models, e.g. composer 2.5. Please add Cursor in the list of AI-Providers

In QA

Local MCP server 𝐓𝐨𝐨𝐥-𝐂𝐚𝐥𝐥 𝐋𝐨𝐨𝐩 𝐁𝐮𝐠

The hanging behavior is a known technical issue in the integration between the local client application (the chat interface or terminal wrapper) and the LLM API. It is called a Tool-Call Loop Hang. Here is the step-by-step sequence that causes the freeze: AI Initiates Tool: The user requests a file modification or read. The AI generates a tool call (e.g., mcp_edit_file_6lpu9l) and stops generating text, as required by the API protocol. MCP Server Executes: The local MCP server successfully executes the file edit and returns the result (the diff or file contents) to the client application. The Integration Gap (The Hang): In a fully automated integration, the client application is supposed to immediately feed the tool's output back to the LLM to trigger the next text generation turn. However, in this specific client setup, the application fails to auto-trigger the next turn. It pauses and waits. The Wake-Up: Because the client is waiting for the AI, and the AI is waiting for the client to send the tool results, the interface hangs. When the user types any message (e.g., "are you stuck again?"), it forces the client application to package the entire conversation history—including the pending tool results—and send it to the LLM. This instantly wakes the AI up, resulting in the immediate "AI-OK" response. 𝐇𝐨𝐰 𝐭𝐨 𝐅𝐢𝐱 𝐨𝐫 𝐌𝐢𝐭𝐢𝐠𝐚𝐭𝐞 𝐭𝐡𝐞 𝐈𝐬𝐬𝐮𝐞 Client-Side Configuration (Permanent Fix): The developer of the client application or terminal wrapper must update the execution logic. The client must automatically post the tool output back to the LLM API endpoint to request the next completion turn without waiting for manual user input. User Workaround (Immediate Fix): Whenever a tool call completes (you will see the green tool response block in the interface) and the interface pauses for more than 3 seconds, type a single character (such as a period . or go) and press Enter. This forces the client to send the tool results to the LLM and resumes execution instantly. AI Mitigation (Combining Steps): The AI will minimize sequential tool calls where possible, combining reads or edits into single multi-file operations to reduce the number of turn transitions.