Lens Prism release notes#
Releases of the Lens Prism agent image, newest first. Releases are tagged vYYYY.M.DDHHMMSS — the timestamp of the build — and that tag is the pullable image tag.
v2026.8.25125905 — 25 August 2026#
A meeting agent is better at telling when it is being spoken to. It now works that out from the meeting audio, so it answers when you address it and stays quiet when you are talking to someone else.
An optional risk gate can refuse a sensitive tool call before it runs. TOOL_RISK_GATE_MODE is off by default. observe records a verdict and still executes the call. enforce blocks a call the classifier rejects, and an unavailable classifier fails closed. A typo in the value resolves to off, so it cannot turn enforcement on by accident. A model refusal is now surfaced as an answer instead of leaving the turn hanging on every surface.
You can now edit the Agent Guide. The operating manual used to be a read-only box with no way to change it. Edit it on the Agent tab of the Profile page and press Save, or run /agent-guide in the terminal to open it in your editor. The agent still has no tool for it, so it cannot rewrite its own operating manual.
Bedrock chat and classification default to the global. inference profile. Unset BEDROCK_MODEL_ID and BEDROCK_CLASSIFICATION_MODEL_ID now resolve to global.anthropic.claude-opus-5 and global.anthropic.claude-haiku-4-5-20251001-v1:0. An explicit us. or eu. value is unchanged. Mantle still needs a bare id.
Also in this release: Chromium in the container trusts the sandbox's TLS-interception CAs, so a browser-backed meeting works behind a TLS-inspecting proxy; a platform MCP tool that reuses a built-in name is dropped instead of replacing the built-in.
v2026.8.24083158 — 24 August 2026#
Prism runs on OpenRouter. LLM_PROVIDER=openrouter puts chat and the DELIVER/SUPPRESS classification gate on OpenRouter, either direct with OPENROUTER_API_KEY or through the Lens Agents gateway, which holds the key itself. The defaults are the OpenAI tiers and the parameter handling is written for GPT-5.x, so a model id from another vendor may not hold those assumptions, and prompt caching is left to the model. Memory embeddings stay off until OPENROUTER_EMBEDDING_MODEL_ID names a model that can deliver the 1024 dimensions the index expects. Voice meetings are unaffected and still need an OpenAI key.
Locked-in mode now freezes searchable memory too. Locked-in mode previously froze only the identity documents, leaving vector memory writable. memory_write and memory_delete are now refused while the lock is on, including a lock turned on mid-turn. memory_search still works, so a locked agent can read what it already knows but cannot add to it.
v2026.8.21064958 — 21 August 2026#
Connectors reached through Nexus MCP work again on Bedrock. Bedrock caps tool names at 64 characters, and some Nexus-namespaced connector names ran longer, which failed the whole request. Model-facing tool names are now truncated to fit, while each call still goes out to the server under its original name.
Grok on Bedrock works again. Turns from Grok on Bedrock failed with an error after a successful response; they now complete normally.
v2026.8.19081228 — 19 August 2026#
An agent can be locked so it cannot rewrite its own identity. A new optional per-agent setting freezes the workspace markdown fields — soul, memory, user, vision, heartbeat, and bootstrap — so the agent's own tools cannot overwrite them, while vector memory and behavioral settings stay editable. An agent cannot unlock itself: the switch lives on the profile page and the Management API, never in the agent's own settings.
A meeting agent answers to its name without a round trip to a classifier. Deciding whether the agent was addressed by name in a group call used to cost a model call on every utterance. A local grammar check now handles the clear cases instantly; anything it does not recognize still reaches the model, so it can only speed things up, never make the agent answer wrongly.
You can steer a running turn from the web chat composer. Sending a message mid-turn so the agent changes course already worked in Slack and the terminal, but the web UI blocked it. Stop now sits next to send, so a mid-turn message reaches the running turn, and send is disabled while the connection is down.
v2026.8.17092438 — 17 August 2026#
Message attachments are saved to the file system instead of being inlined into conversation history. An attachment now reaches the agent as a metadata stub — filename, type, size — and two tools pull in the content on demand: view_attachment returns an image or PDF for the agent to read directly, and hydrate_attachment writes any attachment to the workspace so the agent can inspect it with shell tools such as file, pdftotext, or hexdump.
Attachment content is stored as files under the data directory and expires automatically 7 days after upload. Set ATTACHMENT_TTL_HOURS to change the window; the metadata stub survives expiry, so conversation history stays intact.
A stuck attachment can no longer crash-loop the container. Boot-time storage reconciliation is hardened so a bad row or missing file is skipped instead of taking down startup, and the media store, expiry janitor, and PDF handling were tightened against races.
Also in this release: the agent can stop a running Claude Code task it started, and the Docker image forces a precompiled Python at build time so a fresh CPython patch release can't break the build.
v2026.08.14080709 — 14 August 2026#
A meeting agent no longer goes deaf in a room full of people. Server-side noise reduction over the meeting audio is now off by default, controlled by a new setting, OPENAI_NOISE_REDUCTION (off, near_field, or far_field). The audio the agent receives is Google Meet's finished mix — already noise-suppressed, echo-cancelled, and levelled for each participant — so reducing it a second time was a second pass over a cleaned signal, sitting in front of turn detection and transcription. Its adaptive floor rose with the loudest thing in the call, and a quieter person in the room was suppressed as noise: agents were observed answering another agent's louder synthesized voice instantly while ignoring a human for minutes. Off by default restores that audio to the turn detector. The trade is deliberate — with less reduction, more noise reaches the detector, so a noisy room commits more utterances, and in addressed mode each one costs a classification call. Turn reduction on only if a room proves too noisy, and try near_field before far_field.
Also in this release: in concise mode the agent may now quote its own hidden intermediate narration when a user explicitly asks for it — for example, to repeat an earlier message or show a step it ran during the turn. The default is unchanged: a final message a user did not ask about still stands on its own.
v2026.8.13125224 — 13 August 2026#
The agent can gain capabilities from a plugin, with no code change. A Lens Prism agent now loads Agent Plugins alongside its skills: drop a plugin directory under the data directory and, on the next turn, its skills and any MCP servers it declares become available; delete the directory and they are gone. A plugin can bundle skills, MCP servers, or both. Plugin-supplied skills rank after ones you installed directly, so a plugin can add a capability but never overrides yours. If a plugin is malformed, only the broken part is skipped — a bad MCP server does not stop that plugin's skills from loading, and one failed server does not stop the others.
Also in this release: a meeting fix so the agent's decision about whether it was addressed is judged against what was actually said.
v2026.8.13104825 — 13 August 2026#
A non-Claude inference provider. Setting LLM_PROVIDER=openai runs the agent on OpenAI models — the first provider that does not serve Claude. Chat, the DELIVER/SUPPRESS classification gate, and memory embeddings all run on OpenAI through one surface, direct to api.openai.com or through the Nexus gateway. It uses the same OPENAI_API_KEY voice meetings already use. The context-fullness indicator and automatic compaction work with no extra setup.
Slack status falls back to a reaction only when it has to. When the agent works on a Slack message, it shows a live thread status; the 👀 reaction is now used only when that status can't be posted, rather than in addition to it.
Also in this release: the agent unmutes itself when Google Meet auto-mutes it on join and says so if it can't, and the model in a call is given room to think before it reaches for a tool.
v2026.8.12151416 — 12 August 2026#
Three voice meeting reliability fixes. A call now sees as much of a tool's result as a chat turn does, rather than a truncated view. The loopback browser-control handshake no longer goes through a configured proxy, which broke it in proxied deployments. And a sign-in failure now leaves the page still, so the error points at the real cause instead of blaming the meeting link.
v2026.8.12100230 — 12 August 2026#
The agent can join a Google Meet call and take part by voice. A Lens Prism agent can now join a Google Meet call as a live voice participant — listening, speaking, and using its real tools in the room. It carries the same system prompt and tools it uses in chat. In a one-to-one call it answers everything said; in a group call it responds only when addressed by name. The tools appear only when OPENAI_API_KEY is set and the container has the browser and audio toolchain, which ships in the image. See Voice meetings.
Scheduled tasks no longer post their own output twice. A scheduled task is now told that its final message is delivered for it, so it won't go looking for a Slack tool to post the result itself — which either sent the message twice or sent the agent hunting for a posting tool it shouldn't use. A conditional task's withheld all-clear stays withheld.
v2026.8.10130628 — 10 August 2026#
Scheduled tasks stay quiet when there's nothing to report. A conditional scheduled task — one told to check something and report only if a condition is met — now passes through the same DELIVER/SUPPRESS gate the heartbeat uses, so a run that finds nothing to say sends nothing. A task with unconditional instructions (a daily summary, a fixed reminder) always delivers, even when its text repeats. A run that ends in an error always delivers, so a failure is never swallowed as "nothing to report."
v2026.8.7080521 — 7 August 2026#
Long conversations no longer forget their beginning. A thread previously fed the model only its most recent messages, so older context silently dropped away. Conversations now compact instead: when a turn fills most of the model's context window, the agent summarizes the older history and keeps the most recent messages verbatim. It also happens on demand with /compact in the web UI and the terminal UI.
Start a fresh conversation from the web sidebar. A new-conversation button next to Recents in the web UI opens a clean thread. Repeated clicks reuse the newest empty thread rather than stacking up unused ones.
v2026.8.4071841 — 4 August 2026#
Slack shows when the agent is working. While the agent processes a message you sent it in Slack, it reacts to your message with 👀 and, in a thread, shows a live status — "is thinking…" while it reasons, or the tool it's running — then clears both when it replies. The live status needs Slack's Agents & AI Apps feature and the assistant:write scope; without them the reaction is the cue.
v2026.8.3134735 — 4 August 2026#
See how full the context window is. The web UI composer and the terminal UI status bar now show how much of the model's context window a conversation has consumed, so you can see when compaction is near.
A third inference provider. Bedrock Mantle joins Bedrock and Microsoft Foundry as a provider the runtime can talk to. It is AWS's newer inference endpoint, recommended by AWS for new applications.
v2026.7.31065332 — 31 July 2026#
Messages sent mid-turn reach the running turn. A message that arrives while the agent is already working is now handed to the live turn instead of waiting in a queue, so a mid-thought correction or addition is picked up in the same reply. This release also reorganized the inference-provider code internally, with no change in behavior.
v2026.7.30060034 — 31 July 2026#
Replies are concise by default. In a multi-step turn, only the agent's final message is delivered; the intermediate steps are kept but flagged as internal. Turn on verbose delivery to stream every step. Because every step is still stored, the model's context is unchanged either way — this only affects what you see.
v2026.7.28084404 — 28 July 2026#
The default model is now Opus 5. New agents run on Claude Opus 5 as their main model unless you set a different one. This release also added a boot census and an internal refactor of the provider type, neither of which changes how the agent behaves.
v2026.7.23135032 — 23 July 2026#
The image carries a document toolchain. The agent's container image bakes in Python and the tools the Anthropic document skills need — pandoc, poppler, tesseract, and the Python libraries for PDF, Word, Excel, and PowerPoint — so those skills work out of the box without installing a toolchain at runtime.
v2026.7.15062202 — 15 July 2026#
A cleaner shell environment for the agent. NODE_ENV and Husky variables are stripped from the environment the agent's shell runs in, so commands it runs don't inherit build-time settings that could change their behavior.
v2026.7.10110818 — 10 July 2026#
Claude on Microsoft Foundry. Microsoft Foundry (Azure) joins Bedrock as a selectable inference provider, running Claude through the Anthropic Messages API from a Foundry resource. On Foundry, memory embeddings come from an Azure OpenAI text-embedding-3 deployment.