
Five in-window builds show agent builders writing limits into their systems and shipping the check that enforces them: a security-audit skill whose verifier never found the bug, a model that returns typed decisions, a key service that keeps keys out of the agent's context, a runtime that publishes what it lacks, and speech built from a staged conversation.
llm library for models that accept no conversation history 2. That library also gained a small key service, so an API key can be installed on a remote agent machine and stay out of the agent's context 3. Cloudflare's Python Workers reached general availability with a published list of the Python features its WebAssembly runtime lacks 4. Google released speech models whose unit of work is a staged conversation between named voices 5.| Signal | Builder or project | In-window date | Inspectable artifact | First adoption test |
|---|---|---|---|---|
| The verifier never found the bug | Cloudflare, security-audit-skill | Sep 26, weekly Trending read | findings.json checked against report-schema.json, plus coverage-ledger.json 1 | Read the rejected verdicts before the confirmed ones. |
| A model whose output type is fixed before the call | TypeSafe AI, Jev | Sep 21-22 | A query of typed questions returning probabilities and confidences 2 | Rescore 100 cheap retrieval hits and compare the new order. |
| A key the agent never reads | Simon Willison, llm-keys-ui 0.1 | Sep 20 | A local web form, then llm keys get inside a shell command 3 | Route the next key on a remote box through the form. |
| A runtime that publishes what it lacks | Cloudflare, Python Workers | Sep 21 | The Workers page for the Python standard library 4 | Read that page before porting a worker that uses threads. |
| Speech whose unit is a conversation | Google, Gemini 3.8 Flash TTS | Sep 23 | A script with named speakers, per-line delivery styles, and 2,000+ voices 5 | Direct one two-speaker exchange line by line. |
security-audit-skill, a coding-agent skill that turns a coding agent into a security auditor. The skill runs six phases: reconnaissance, coverage-led hunting, candidate validation, structured output, independent record verification, and target-neutral reporting 1. The repository carries the MIT license, holds 14 commits, and its newest commit dates from September 14, before this window 1.confirmed carries a complete source trace and a bounded observed result, needs_validation carries one exact unresolved fact while the skill withholds a severity, and rejected records a disproof 1.validate-findings.cjs checks findings.json against report-schema.json in phase four and again after every phase-five replacement, and validate-coverage-ledger.cjs checks coverage-ledger.json once the ledger exists and after each later update 1. Repeat runs compose: the skill reads prior ledgers and findings to target gaps and revalidate changed source 1.needs_validation and stops there 1.rejected records first. Then count the needs_validation leads that arrived with an exact unresolved fact attached, because those are the ones a second run can close.state object, which can be a string, a list of strings, or a set of name-value pairs, and sends it with one or more questions. Yes/no questions return a confidence between 0 and 1, choice questions return a probability distribution across the options you supplied, and score questions return a float along a described range. Questions are evaluated in parallel, so a batch takes about as long as a single question 2.
llm library. Release 0.36, published September 22, lets a model plugin declare supports_conversation = False; the library then raises llm.ConversationNotSupported when such a model receives assistant or tool history, and llm chat rejects the model before a session starts 11. The first plugin to use the flag is llm-typesafe, the plugin that wraps Jev 12. The same release wraps reasoning traces in tags inside the Markdown output of llm logs 11.llm-keys-ui 0.1 on September 20 for one narrow problem 3. He had started using Codex Remote to run coding agents on several machines while controlling them from his phone, and he did not want to paste API keys into an agent session 3.uvx --with llm-keys-ui llm keys-ui --all makes the agent report the server's URLs, including local network and Tailscale addresses, and a form at one of those addresses saves new keys 3. The interface never displays an existing key value, and later work reaches the key through a command such as llm keys get anthropic inside a shell command 3. The release is tagged 0.1 on GitHub 13.workerd, Cloudflare's V8-based runtime 4.self.env.QUEUE.send({"key": "value"}) works, replacing the to_js glue that used to sit at the RPC boundary 4. A workers.asgi connector runs FastAPI applications and workers.wsgi runs Django or Flask, with the Workers platform taking the place of a web server 4. Hyperdrive reaches Postgres and MySQL because Cloudflare implemented socket system calls on top of the Workers connect API, where a WebAssembly sandbox normally stubs the POSIX networking calls out 4.multiprocessing and threading are non-functional in the WebAssembly virtual machine 15. Simon Willison flagged the same two features while covering the release 16.pywrangler tool runs a full local simulation of the platform, which for him meant executing Python through Pyodide in WebAssembly inside V8 inside a 123 MB workerd binary that landed under node_modules 16. Cloudflare credits the release to Gyeongjae Choi, Dominik Picheta, and Hood Chatham, two of whom are Pyodide core maintainers 16.
speech_metadata annotations on each dialogue line. 17rejected verdicts.findings.json file that fails report-schema.json stops the phase 1. A model plugin marked supports_conversation = False makes the llm library raise before it sends history to a model that takes none 11. An API key handed over through the local form stays on the machine and out of the conversation 3.github.com
simonwillison.net
simonwillison.net
blog.cloudflare.com
blog.google
github.com
blog.cloudflare.com
typesafe.ai
github.com
github.com
github.com
learn.chatgpt.com
developers.cloudflare.com
simonwillison.net
simonwillison.net
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.