Subscribe free
Morning Merge · Thursday, October 22, 20264 min read

Claude Duet wants your inbox; patch Node today

Plus a poisoned LiteLLM release, Mistral's 1T-parameter "le Chonk" and DuckDB 2.0 LTS.

The main thing

At an empty drafting desk with the chair pushed back, a jointed mechanical arm has finished assembling a small model and now holds a sealed envelope, stopped just above the slot of an outbox tray.

If you start each morning by sorting your inbox and calendar before you write any code, someone now wants that shift. You do have to trust it with the keys first.

Anthropic launched Claude Duet, a proactive agent you message like a teammate. You give it a task by text or voice. It works on its own computer in the cloud, using the apps you connect, and messages you when the task is done or when it needs a decision.

The regular Claude app waits for you to open a chat. Duet comes to you instead. It sends a morning brief, flags what needs you in your inbox and calendar, and drafts replies for you to approve. It can also put together a brief, a deck or a dashboard. It's the coworker who never takes lunch, which is either a feature or an HR problem.

The details:

The HN thread is split. One commenter likes the idea but has "a hard time making the trust leap." Another says tools like this often force relevance out of integrations where there isn't much. Anthropic's own caveat agrees in part: Duet may misread a thread, miscalibrate what's urgent, or miss something that arrives between check-ins.

What to do today: If you're a US Pro or Max subscriber and curious, join the waitlist. When you get in, give it low-stakes tasks first. Compare its morning brief with your own idea of urgent before you approve anything it sends. Watch your usage limits too.

Quick bits

Node.js shipped security releases for the 22.x, 24.x and 26.x lines. They fix high-severity TLS hostname bypasses, a dns.resolve NUL-character truncation and a Brotli decoder out-of-bounds write that permits remote code execution. Upgrade to 26.12.1, 24.22.1 or 22.23.4. End-of-life versions stay affected.

Mistral Large 4 is in public preview, officially nicknamed "le Chonk." It is a natively multimodal model with 1 trillion parameters, 52 billion of them active. The preview API is live in Mistral Studio, and the weights drop at the end of the month.

LiteLLM 1.107.0 on PyPI shipped a credential stealer and a backdoor. Both run in every Python process on the host, even ones that never import litellm. Did you install it, or pull LiteLLM's v1.107.0, latest, main-latest or main-stable Docker images between 11:46 and 14:20 UTC on October 21? Then rotate every secret on that machine. 1.106.2 is clean.

Bun 1.4.4 adds bun fmt, a Prettier-compatible formatter that reads your existing Prettier or oxfmt config. On Prettier's own repo, bun fmt --check takes 60 ms and Prettier takes 17 seconds. Awkward family dinner.

DuckDB 2.0.0 LTS "Cinnamon Teal" adds a client-server mode through the Quack protocol. It also brings asynchronous I/O, a first-class VARIANT type and triggers. Support runs until at least October 2027. The announcement has a section on breaking changes, so read it before you upgrade.

Recursive's Flint is available in Ollama 0.40.8. It is an Apache 2.0 coding model: a 40B-parameter mixture-of-experts with about 2.5B parameters active per token and a 262K-token context window. For now, ollama run flint works only on macOS.

GitHub now keeps a copy of 99.99999% of its repositories on Azure. To bring over the busiest holdouts, it is scoping write quorums to individual references instead of whole repositories. In internal tests, writes to different references got 3–4x higher throughput.

Google published its Rust style guide. It covers API and implementation design as well as formatting, and it follows the official Rust style wherever the two don't conflict. Its Chromium rules (small crates, no subdirectories inside a crate) are getting pushback from commenters.

Build this

A diagram of this evening's project

pth-patrol. The LiteLLM stealer got in through a 12-byte cook.pth file, because Python runs any line that starts with import in a .pth file at startup. Write a script that walks every virtualenv on your machine, prints each executable .pth line and any sitecustomize.py, and diffs the result against yesterday's run. Start with site.getsitepackages(), add a cron job, and you have a tiny tripwire. It's paranoia, but automated.

Patch roundup

Today's running theme is "rotate your secrets." Tomorrow's is remembering where you put the new ones.

← All issues

Get this in your inbox every morning.

Free. Five minutes. Unsubscribe in one click.

Subscribe free →