This was a fix week, not a features week — and one fix in particular mattered more than it might sound: Saved Agents with file search turned on could stop mid-answer and show you the raw tool instruction instead of actually searching your file. If you've been running agents against documents recently, that's now resolved. We also caught and closed a pagination bug that was quietly truncating image history at 100 items, and cleaned up how broken chat links behave so they fail cleanly instead of throwing a server error.
What shipped this week
| Feature | Category | Who it's for |
|---|---|---|
| Agent file-search execution fix | Fixed | Anyone using Saved Agents with file search or knowledge attachments |
| Image history pagination past 100 items | Fixed | Users with large image generation libraries |
| Broken chat route handling | Fixed | Anyone following an old, shared, or malformed chat link |
| Site-wide SEO and redirect cleanup | Improved | Anyone finding Writingmate through search or older bookmarked links |
Saved Agents' file search actually searches now
Some Saved Agents configured with the file-search tool were, under specific conditions, rendering the literal searchFile instruction back to the user instead of running the search and answering the question. The trigger was a stale capability flag: the browser told the backend the underlying model couldn't do file search, even when it could, so the request got treated as a plain-text chat turn instead of a tool call. Worse, the message could still get counted against your usage even though you never got a real answer.
The fix moves the source of truth to the resolved model capability on the backend, not whatever the client last cached. Normal chat and agentic chat endpoints both use the same corrected logic now, and we log the client-reported and effective capability values separately so a regression like this is easier to catch in the future.
To try it: open /agents, create or edit an agent, turn on file search, attach a document, and ask something that requires pulling a specific fact out of it. You should get a direct answer, not a tool-call fragment.
Image history stops truncating at 100
If you generate a lot of images, scrolling back through your history used to just... stop. The history endpoint fetched a single storage prefix and returned whatever fit in the first 100 items, even if your library had hundreds more sitting behind it. Anything older than that page simply wasn't retrievable from the gallery view.
We rewrote the fetch so it walks the storage prefix required for whatever page you're actually requesting, instead of assuming everything lives in the first bucket. Chronological merging with images generated inline in chat is preserved, so your gallery still reads as one continuous timeline rather than two separate lists stitched together. We added regression tests covering both a deep-page scenario and an 889-item full-history pull to make sure this doesn't regress quietly again.
Try it at /images — scroll all the way back if you've got a large library, and everything should now be there.
Broken chat links fail cleanly instead of crashing
We caught a production error where a request to a chat route with an invalid ID — a link with the literal string "undefined" in place of a real UUID, for example — was passed straight to the database, which threw an invalid input syntax error and surfaced as an HTTP 500. It's a small edge case, but it happens whenever a link gets shared or bookmarked incorrectly, or a client-side redirect fires before an ID is ready.
Chat routes now validate the ID shape before it ever reaches the database. An invalid ID returns a proper not-found response instead of a server error, so instead of a broken page you get a normal "this chat doesn't exist" experience.
We also shipped a batch of SEO and link hygiene fixes this week: Bing Webmaster had flagged 381 pages with meta descriptions under 100 characters and a larger set with titles running past 70 characters. Both turned out to be generator bugs rather than content problems, so we fixed the generators — a new buildMetaDescription helper assembles descriptions from each page's own content up to 120–160 characters instead of falling back to filler — and added coverage across the whole site so it doesn't drift again. Alongside that we fixed a handful of redirects and insecure (non-HTTPS) content links that were slipping through.
Fixed this week
- Saved Agents with file search now execute the search instead of returning a raw tool instruction, and no longer burn a message on a non-answer
- Image history pagination now retrieves items past the first 100, preserving chronological order with in-chat generations
- Chat routes with invalid or malformed IDs return a clean not-found response instead of a database error
- Meta descriptions and page titles across the site now generate within search-engine length limits instead of being too short or too long
- Broken redirects and insecure content links found in the same audit are corrected
Thanks for reading, and for flagging the bugs that made this list — most of these came from real production traffic, not internal testing. For the full history of what's shipped, browse /changelog.
— Artem
Frequently Asked Questions
Written by
Artem Vysotsky
Ex-Staff Engineer at Meta. Building the technical foundation to make AI accessible to everyone.
Reviewed by
Sergey Vysotsky
Ex-Chief Editor / PM at Mosaic. Passionate about making AI accessible and affordable for everyone.
