Sept. 23 (UPI) — For the third time in a month the U.S. Supreme Court is taking up the legal battle over Missouri’s redistricted congressional map following a lower court ruling that sided with the new map.
The Supreme Court has twice ruled against the new map, clearing the way for the state to use a congressional map drawn in 2022, which it also used in 2024. On Monday, the Eighth Circuit of the U.S. Court of Appeals in favor of the new map which was drawn to favor Republicans.
Opponents of adopting the new map asked the Supreme Court on Tuesday to again weigh in, arguing that ballots have already been sent out using that map and a change at this late stage would create “chaos on both sides on Election Day.”
Missouri held its primaries under the new map in August before it was struck down by the courts. Reverting to the 2022 map will move some voters into different districts than they were in during the primary, raising concerns about voting rights.
In its ruling on Monday, the Court of Appeals said that holding the election under different district lines than the primary would be unconstitutional.
If the Supreme Court does not take action, the lower court ruling will stand, taking effect next week to direct Missouri to move forward with its new congressional map for the midterm elections and beyond.
Missouri’s redistricting effort followed a call from President Donald Trump to Republican-led states to redraw their maps to pick up seats in Congress and maintain a Republican majority. The call launched both Republican and Democrat-led states to redraw maps with partisan goals in mind.
Missouri’s new map most notably shifted congressional lines in Kansas City to turn a Democrat-leaning district into a more favorable district for Republicans.
Republicans hold six of Missouri’s eight U.S. House seats.
This week in Washington
President Donald Trump speaks to more than 100 hunters and fisherman at a dinner in the Rose Garden of the White House on Thursday. Photo by Jim Lo Scalzo/UPI | License Photo
Claude discovers a novel enzyme system with CRISPR-like repeats
Sep 23, 2026
We’re introducing a new life sciences research group and laboratory at Anthropic. Our focus is on fundamental biology research using Claude: exploring datasets of DNA to identify uncharacterized protein families, generating hypotheses at scale, and testing them through experiments in the lab. This post introduces the team behind this work and shares early results in which Claude discovered a novel enzyme system with properties reminiscent of CRISPR, with only high-level direction from our scientists.
Many discoveries that have revolutionized biology and medicine started with a scientist noticing something odd in the staggering diversity of molecular machines found in nature. Restriction enzymes, proteins that cut DNA at specific short sequences, were found in bacterial immune systems, where they destroy the DNA of invading viruses. Researchers realized they could use these enzymes to cut DNA at chosen places and splice genes from one organism into another, which launched the biotechnology industry. Taq polymerase, an enzyme that copies DNA at high temperatures, was identified in a bacterium in a Yellowstone hotspring. It became the basis for PCR, the DNA-copying method used in much of modern diagnostics. CRISPR was first noticed as an unusual repeat sequence in the DNA of certain bacteria, and is now the foundation of gene editing-based medicines.
In the spring of 2026, we formed a research group to see whether general AI models can systematize and accelerate such discoveries. We believe that this acceleration will come from establishing a new way of doing biology research, in which agents collaborate with humans in every step of the process. Developing this new way of working required that we build our own lab and a single team working on everything from training Claude in biology to running experiments in the lab.
Today, we’re sharing early results from one of our first research programs, in which Claude autonomously discovered a novel enzyme system that is associated with an array of DNA repeats, a pattern reminiscent of CRISPR. Although we don’t yet know its function, the system that Claude discovered has a set of characteristics that have only ever been found together in a handful of other systems, all of which are programmable and perform operations like cutting, copying, and pasting DNA. Beyond CRISPR, which has already transformed science and medicine, several other such systems are now in development as promising tools.
The system that Claude found is based on a reverse transcriptase (RT), enzymes that copy RNA into DNA. While this underlying RT, found in a jumbo phage, had been identified in previous studies, Claude appears to be the first to notice the system’s defining features—an associated array of non-coding DNA sequences and an additional accessory protein of unknown function.
After reviewing the pre-print, Feng Zhang, one of the pioneers of CRISPR genome editing and a professor at MIT and the Broad Institute said:
This is an exciting example of how AI agents can contribute to biological discovery. The identification of RNA-repeat arrays associated with reverse transcriptases is genuinely intriguing and merits further investigation. I hope this work encourages more scientists to explore how AI can support their research.
We gave Claude a prompt to search through a massive database of DNA sequences for interesting new examples of RTs. Our involvement was limited to the initial prompt and the lab work, while Claude agents combed through the database, investigated the distinct RT families, and used their own judgement to identify interesting candidates. After 21 hours spent searching this data by roughly 950 agents using 210 million tokens, one of the agents spotted something remarkable: a repeating pattern of DNA sequences that occurs next to the gene for an odd-looking RT. After further analysis and testing in our lab, we recognized that this pattern marked a previously uncharacterized enzyme system found in bacteriophages (the viruses that infect bacteria) that we call array-associated reverse transcriptases (ART).
Our work to understand the primary function of ARTs is ongoing. However, we think it is important to share such findings early, both to demonstrate Claude’s capabilities and to give the broader community insight into what we’re working on. We have released a pre-print (here) that discusses this in more detail.
About our lab
We are a team of scientists who have spent our careers exploring unusual proteins, and specialize in using computational approaches to systematically read DNA, interpret its evolution, and pick out biological systems for further characterization. Our research prior to joining Anthropic has helped to better understand the evolution and regulation of CRISPR systems, discover new enzymes for next-generation cell and gene therapies, and build tools for accelerating the identification of anomalies in DNA, such as human pathogenic variants. We are part of Anthropic’s life sciences organization, alongside teams whose work includes drug discovery, and training Claude in biology and chemistry.
Our lab, located in the Bay Area, looks like a typical molecular biology lab. We do research that involves only the lower-levels of the biosafety risk level (BSL-1 and BSL-2) and we do not handle pathogens that can infect humans. All of the lab work is performed by human scientists. Although we’ve experimented with using AI to accelerate lab work with initiatives like the Model Hardware Standard, this approach is less conducive to the sort of ad hoc workflows that are involved in our molecular biology research.
How we work
Many of our workflows involve having Claude search through the vast collection of DNA sequences associated with proteins without a known function. One typical pattern begins with a survey of a given protein family. Claude reads the relevant literature and reproduces the established results from public data to check its methods. It then searches for family members or genomic neighbors that fit no described system, and writes a short, human-readable report for each candidate that proposes a function and describes the evidence supporting its claims. In follow-up analyses, Claude critically evaluates the evidence—typically most candidates are eliminated at this stage. A survey may end with a single candidate worth testing, or with none.
When a candidate survives our review, we test it in the laboratory, expressing the protein in standard laboratory strains and characterizing it biochemically and structurally, with Claude helping to interpret the data. We do our work in Claude Science and Claude Code, the same tools available to any scientist, and sometimes with a harness of our own that coordinates many Claude sessions running in parallel.
Because Claude produces hypotheses so prolifically, the hypotheses themselves have become an object of study for us. With hundreds to thousands of candidate reports from a single campaign, we have been asking what distinguishes the proposals we judge worth testing from those we set aside. What we learn goes back into the instructions we give Claude and teaches it to mimic our own scientific taste.
Claude finds ART
In the past few years, researchers have discovered many more reverse transcriptases (RTs), most of them in bacteria, where they act as part of the immune system. Nearly all RT families were found by genomic analysis, or genome mining, which requires researchers to search sequence databases for genes that no one has characterized, notice the unusual ones, and work out what they do.
Claude agents gathered over 200,000 RTs, picked out 3,500 new candidate systems, and narrowed those to the 20 most-compelling candidates that they analyzed to produce human-readable reports. For an expert scientist, this type of analysis can take weeks to months of work.
During the course of its research, Claude noticed an unusual RT family and decided to examine it in greater detail. While combing through the raw DNA sequence near the RT, the agent exclaimed: “[The DNA next to the RT] is spectacular: I can see by eye a tandem repeat array … that’s a CRISPR-like … repeat array?!”
The raw DNA Claude was reading when it detected a repeat pattern that no one had noticed
It then proceeded much as a human scientist would when faced with a potential discovery. It counted the repeats and measured their spacing, compared the layout with the known RT systems, and searched the literature for any previous report of the pattern. After a thorough analysis it was convinced that it had found a new biological system, and filed a report for human review.
The system it found, ART, is found mainly in bacteriophages and consists of three parts: the RT, a partner gene beside it, and a long array of evenly spaced DNA repeat sequences. The repeat layout resembles a CRISPR array, which holds a bank of different RNA sequences that make CRISPR-Cas systems programmable biotechnological tools. Our first experiments show that the ART array is also expressed as a set of distinct short RNAs, suggesting that something analogous may be at play for this system.
Further experiments are underway to determine how ART works, and we are sharing these early findings to show the community that Claude can autonomously detect anomalies and drive analyses to initiate biological discoveries.
You can find more detail in our technical report (here).
Work with us
We hope this work demonstrates the value of AI-driven hypothesis generation to the wider scientific community, and we would like to work with other scientists to extend this approach to a broad range of problems, in genomics and in other fields. If you have a proposal for a research question, we would like to hear from you.
Introducing the Life Sciences Verification Program
The Life Sciences Verification Program (LSVP) gives life science professionals access to Claude Mythos, Opus, and Sonnet models with a refined set of safeguards more permissive for biology-related work.
Sept. 23 (UPI) — The Trump administration responded to a lawsuit by CNN, MS NOW and Politico by arguing that the news organizations’ reporting threatened national security.
They said they were filing the suit “to protect our First Amendment rights and defend the principle that the government does not decide what the press reports or publishes.”
They filed documents requesting a temporary restraining order to force the White House to allow them in while the case continues. The filing Wednesday is in response to the motion for the restraining order.
“Access to the White House is a privilege — not a right,” the administration said in the filing.
“The President’s actions must be sustained because the President has ‘compelling interest[s]’ in enforcing minimum standards for bona fide journalists and safeguarding national security information,” the filing said.
The court filing said the White House had sent letters to the plaintiffs explaining that the reporters had “exhibited behavior in violation of the standards of professionalism and decorum expected of those given access to the White House Complex, including by trafficking in verifiable falsehoods about national security and other issues, and publishing sensitive or classified information.”
The “[h]ard pass credentials are reserved for those who abide by standards of professional conduct, demonstrate a level of trustworthiness commensurate with the privilege of unfettered access to the White House Complex, and perform their duties in a way that does not interfere with the White House’s daily operations,” it said.
“The President believes basic journalistic standards require calling, asking for comment, and providing a reasonable opportunity for a response. At a bare minimum, it is a significant violation of decorum to publish classified and sensitive national security information,” the document said.
There is no law that explicitly makes it a crime for a journalist to obtain or publish classified information.
The lawsuit’s plaintiffs are the three media outlets and their White House reporters MS NOW’s Akayla Gardner, CNN’s Betsy Klein and Politico’s Cheyenne Haslett, who all lost their credentials.
Defendants are Trump, White House Chief of Staff Susie Wiles, White House communications director Steven Cheung and Secret Service Director Sean M. Curran.
Other media outlets who provide video coverage of Trump’s events and press conferences decided to stop doing so, leaving Trump’s media events without microphones.
The Department of Justice lawyers and lawyers for the media outlets will meet in court before U.S. District Judge Timothy Kelly Wednesday. In 2018, Kelly granted a temporary restraining order to allow CNN reporter Jim Acosta access to the White House after Trump banned him.
Trump has said he will follow Kelly’s ruling if he orders that the White House allow the reporters back in. But he argues that he should have the right to kick them out.
“I’m talking about national security, and I think we have a right to clean out fake news,” he said Tuesday.
For the two decades of Windows, the scroll bar control had just a few basic operations. (For expository purposes, let’s assume that the scroll bar is vertical.) There are five mouse targets: The arrows at the ends of the scroll bar scroll by a line. The regions between the thumb and the arrows scroll by a page. And the thumb itself lets you drag the scroll bar to a specific position.
Windows 7 added a right-click menu to the scroll bar. This menu gave you four options that matched existing mouse operations, two operations that matched existing keyboard operations, and a new operation.
Menu option
Mouse
Keyboard
Scroll Here
Drag thumb to position
Top
Drag thumb to start
Home
Bottom
Drag thumb to end
End
Page Up
Click in upper gutter
PgUp
Page Down
Click in lower gutter
PgDn
Scroll Up
Click on up-arrow
↑
Scroll Down
Click on down-arrow
↓
The interesting new one is “Scroll Here”: You can right-click directly on the spot you want to scroll to, and then pick “Scroll Here”. This is much more convenient if you want to scroll a long distance, since you don’t have to grab the scroll bar thumb and then drag it all the way to where you want to go. You can just focus on where you want to go and not where you are coming from.
I used this context menu a lot when I needed to jump long distances.
An even-more-hidden shortcut was added at the same time: Holding Shift while clicking on the scroll bar jumps the thumb directly to the spot where you clicked.
I didn’t know about this shortcut until recently. I had always used my trusty context menu.
Sadly, almost nobody uses Win32 scroll bars any more. Everybody uses frameworks that provide their own custom scroll bars.
Electron and other Web apps use the Chromium scroll bar, which doesn’t implement the context menu, but at least it does implement the Shift+click shortcut.
The WPF XAML framework appears to implement both the context menu Shift+click.
The Qt framework has multiple customization points, so it’s really up to each app’s developer. You can enable context menus with SH_ScrollBar_ContextMenu, you can enable “left-click to jump to a position” with SH_ScrollBar_LeftClickAbsolutePosition, and you can enable “middle-click to jump to a position” with SH_ScrollBar_MiddleClickAbsolutePosition.
Great, so by the time I learn about a shortcut for scroll bars (Shift+click), the ecosystem has fragmented so much that I can’t even rely on it working.
Sept. 23 (UPI) — A Manhattan court sentenced disgraced film producer Harvey Weinstein to 15 years in prison Wednesday for sexually assaulting Miriam Haley, a former production assistant on Project Runway.
The punishment came after a New York jury found Weinstein, 74, guilty in June 2025 of committing a sexual act against the woman in his SoHo apartment in 2006. Prosecutors sought 20 years in the case, while Weinstein’s lawyers requested nine years, The New York Times reported.
Both Haley and Weinstein spoke in court Wednesday morning ahead of the sentencing. Haley said she has been ridiculed in the media in the years since she came forward with the allegations against Weinstein. She said she’s also been diagnosed with post-traumatic stress disorder.
“It’s a life sentence for me,” she said, adding that the backlash has left her “questioning every encounter I have.”
Weinstein said he was innocent but offered an apology to those he hurt, CBS News reported.
“I really do have remorse for Miriam Haley,” he said.
The Manhattan Supreme Court jury that found Weinstein guilty for assaulting Haley also acquitted him of the same charge related to a case involving another woman, Kaja Sokola.
A 2020 jury trial found Weinstein guilty on all charges against him, but an appellate court in 2024 overturned the verdict, leading to a retrial.
A few months ago I was dragged into a call with my engineering counterpart and their boss (who happens to be our SVP of engineering). Something had gone wrong that shouldn’t have. Nothing catastrophic, but important enough that I was now on a call with an SVP.
I started to explain how it happened when they cut me off with “Michael, I don’t want the details”.
They continued:
I know that if we get into the details, the reasons will be perfectly reasonable. You’ll explain what happened, I’ll understand why everyone made the decisions they made, and I’ll empathise with you.
Then it’ll happen again.
So I don’t want the details. I want to know what we’re changing.
At first I thought “I don’t want the details” sounded dismissive. How can they make informed decisions without understanding the details?
Then I realised that “I don’t want the details” wasn’t being dismissive. The executive assumed that we were competent, and was saying “I already believe you. Now let’s talk about what happens next”.
Asking the right question
After something goes wrong, most organizations ask “Why did this happen?” This is a question we’re all familiar with answering.
We write up timelines. We reconstruct decisions. We explain dependencies. At the end of it, we hand over a document that contains the specific combination of events that led to the incident.
Everyone nods their head, says “that makes sense”, and we all move on with our day.
Understanding an issue is not the same as fixing it. A good explanation can make things worse. Once everyone agrees that the behaviour was reasonable, the urgency to change anything disappears.
When an incident is an unfortunate but understandable sequence of events where no-one is at fault nothing changes. Then the same thing happens six months later, and everyone is left wondering how we landed here again.
To drive change in your organization, don’t ask “why did this happen?”.
Instead, ask:
What are we changing so that the same class of failure is less likely next time?
Reasonable people
The SVP wasn’t interested in understanding how the issue happened or who was involved. They didn’t want to be convinced that everyone involved behaved reasonably. That’s a baseline expectation.
Their question became:
“Given that reasonable people produced this outcome, what needs to change?”
Consider these examples:
“We missed it because Alice was on holiday and Bob thought the Widgets team owned it”.
Okay. How do we make ownership unambiguous when someone is unavailable?
“The requirements changed three days before launch.”
Of course they did! What happens when requirements change inside the launch window?
“The alert fired, but the on-call engineer had already dealt with twenty low-value alerts that evening”.
Makes sense. How do we improve the signal to noise ratio of our alerts?
Focus on changing the system. The people are usually not what needs changing.
A good explanation is not a fix
If your postmortem is full of sentences like “we should involve support earlier” and “we need to communicate better”, or my personal favourite, “we’ll be more careful next time”, you have a collection of hopes dressed up as progress.
If your corrective action depends on people remembering a conversation from six months ago, you don’t have a corrective action. You have organizational folklore. If everyone involved in the incident left the company tomorrow, would the fix still work? If the answer is no, the people may have learned something while the system is still destined to fail.
For a postmortem to drive lasting change, ask:
If the same situation happened tomorrow, what would cause a different outcome?
A process that forces a decision at this point is an improvement. A system that prevents this class of mistake is stronger still.
Process for process’ sake
You can take “the system prevents this class of mistake” too far.
Not every failure deserves a new process. That’s how you build environments that no-one wants to work in. Sometimes the cost of preventing recurrence is higher than the cost of occasionally accepting the failure, and that’s ok.
But you need to accept failure with your eyes open. “We are consciously accepting this risk” is very different from “we said we’d try harder and everyone felt better”.
Trust
I still think about what the SVP said a lot. What sounded like impatience was a declaration of trust. They didn’t need me to prove that the people involved were competent or well intentioned. They were willing to start there. If the investigation showed otherwise, we could deal with that separately.
What they didn’t want was for empathy to become the mechanism by which the organisation absolved itself of having to change.
People are usually making the best decisions they can with the information, incentives and constraints around them. That’s why fixing the people is often the wrong answer.
Sometimes the most useful thing a leader can say is:
I believe you. I don’t need the details. Tell me what we’re changing.
If you’ve been following Tailscale at all, you know we’re really just a bunch of geeks who care a lot about internet connectivity. One thing we love to talk about is NAT Traversal. That’s one of the core value-adds with Tailscale: we tamed NAT. Not every network is friendly, but Tailscale can still find a path in a wide range of conditions. That’s not the only important thing for an internet protocol: the data plane also has to be performant.
All of this has made Tailscale practical for more performance-sensitive workloads. It means you can use Tailscale for continuous integration, agentic workflows, remote development environments, robotic edge devices, heavy data and telemetry workloads, and more. Tailscale helps those devices connect across a wide range of network conditions.
So yeah, we think Tailscale is fast. But we also think we can make it faster.
Today we’ll detail how we’re boosting throughput for app connectors, subnet routers, and exit nodes, with some multi-queue technology (landing in the second half of 2026). We’ll also preview some throughput and memory overhead improvements we’re deploying in upcoming stable client releases. And we’ll look at some performance tooling issues we want to solve for our customers.
Most network packets are tiny, like 1 KiB. But to use Linux’s most efficient throughput tools, like Generic Receive Offload (GRO), Tailscale has to be ready to accept 64 KiB of traffic at once. It’s a bit like container shipping: the ports, ships, and trucks are built for one container shape, however full it happens to be.
Tailscale has to unpack those containers—every packet gets decrypted and delivered on its own. The wireguard-go implementation that informs Tailscale’s cryptography and networking essentials, only offers one 64 KiB buffer size to unpack into. So a 1 KiB packet is copied into its own 64 KiB buffer, every time. That’s a rich optimization target.
On Linux and Android, Tailscale now leaves those packets where they landed. It identifies where each one starts and ends inside the single large read instead of copying it somewhere new. Small packets stay small in memory, many share one allocation, and they spend less time being copied. In itself, this led to a roughly 5% speed-up in many network configurations.
Separately, we shortened packet queues—the lines packets wait in between stages of the pipeline. The queues are there to absorb bursts of traffic. Testing showed that most of that depth went unused, while shorter queues meant less waiting time and less memory overhead.
What do we do with all that freed-up memory space? We passed the savings on to some of the hardest-working nodes: subnet routers and app connectors.
Subnet routers can look completely different across different tailnets. For someone running a small homelab network, a subnet router can easily handle a small set of 192.168.x.y non-Tailscale devices. A subnet router that fronts a cloud deployment, one with hundreds of peers, will carry substantially more traffic.
Until recently, subnet routers, app connectors, and exit nodes processed packets for multiple independent streams in one ordered, single-thread pipeline. That meant a single lane was shared across many connections, because a receiving application must never see its own packets arrive out of order.
Having reduced our memory footprint, we had capacity to implement a multi-queue system: several lanes instead of one, scaled to the machine’s resources rather than the number of peers. Each stream of packets gets a lane and stays there, while the lanes run in parallel, allowing work to spread across CPU cores.
It results in higher aggregate capacity and lower delay between receiving and forwarding packets for subnet routers and app connectors. Hardware you already have gets used more efficiently. App connectors and exit nodes, typically serving many users with short-lived connections, get a particularly noticeable boost.
“This translates into lower latency, essentially faster processing of data from the moment we read it off the wire to the moment we send it to the OS,” said Alex Valiushko, member of technical staff at Tailscale.
Taking advantage of Linux’s writev capabilities in the Tailscale client, Tailscale can pass multiple pieces of packet data to the Linux kernel in one operation, rather than having to copy and combine those pieces before passing them to the kernel. The v in writev stands for “vector”: Tailscale can describe separate pieces of data that need to be moved, without moving them. It means fewer copies of packet data in memory, fewer write operations, and higher throughput.
For now, these speed-ups are available only on Linux and, where applicable, Android systems. But we’ve also been working on features that apply to other systems. Tailscale clients will soon be able to use netmap caching to start more quickly in many conditions.
A machine connecting to Tailscale usually starts by connecting to Tailscale’s control plane, in something like 100 milliseconds on a typical network. The machine authenticates and gets a “network map” (netmap) describing the devices it can reach and how to reach them. This startup process should feel fast, maybe instantaneous, and with a good network connection, it typically does.
But when you’re on bad airplane Wi-Fi, or inside a hotel with aggressive filtering, or other not-great connectivity setups, it can take a while for the machine to reach the control plane—and sometimes you may not be able to reach it at all. It’s often not obvious where the problem is, but the effect is that you can’t reach other devices.
Even under ideal network conditions, 100 milliseconds of startup latency may be too much for some latency-sensitive workloads.
Netmap caching helps machines get connected when the control plane is not quickly reachable. When it’s enabled, each device on your tailnet stores a copy of the netmap on disk. When a device starts up, it can use that cached copy to establish connections with other devices on the tailnet, until it’s able to contact the control plane to get the latest info. (These connections are negotiated between the devices directly, and Tailscale does not see any of the traffic, as usual).
“Bad network conditions—that’s really the space where people can get a lot of utility out of netmap caching,” said Claus Lensbøl, member of technical staff. “[A device client says], ‘You know what? We haven’t talked to control yet. We’ll probably get there soon. In the meantime, you can still start doing something.’”
There are a few limitations. Caching can only work if the device has previously connected to the tailnet at least once, to fetch a network map from the control plane. In addition, netmap caching requires the device to have persistent disk space to store the cache. We’ve taken care to minimize unnecessary disk writes, but in some cases you may not want to enable it. For example, on exceptionally large tailnets, updating a cache may require a lot of disk traffic. Likewise, devices that use slow or wear-sensitive storage like SD cards may prefer not to enable netmap caching.
For most devices on most tailnets, though, this feature can notably speed up how quickly devices can establish contact with each other at startup. We’ve seen tailnets with poor control plane reachability start sending through the data plane, on a “warm” cache start, one to two orders of magnitude faster than from a “cold” start. For devices facing variable startup latency, or far away from a DERP server or the control plane, the benefits are particularly tangible.
Memory reduction via buffer changes (Linux/Android) is expected in the v1.104 client.
Multi-queue to benefit subnet routers and app connectors is planned for a release after v1.104.
Throughput gains (Linux/Android) were partially implemented in spring 2026; leveraging the additional gains in memory and throughput is planned for a release after v1.104.
Netmap caching is available as a feature flag in the current Tailscale client; it is expected to arrive by default in v1.104, following further testing. Mobile clients are expected to have the feature in a release after v1.104.
Sure, we think Tailscale is fast. But you shouldn’t have to trust us on that. That’s why we’re exploring a Tailscale-aware monitoring and testing toolkit. We want to give our customers the tooling they need to test, diagnose, and understand their network configuration, in a way that’s Tailscale-native.
Here are the gaps we see in modern performance testing:
Distribution tax: Most performance tooling is point-to-point, and requires you to install something on every endpoint.
Workflows are rigid: It’s pretty easy to run the wrong test, get the wrong output, and chase a problem that’s not there.
Protocol support: Many tools don’t support newer protocols, such as QUIC and HTTP/3.
Tailscale-awareness: General-purpose tooling is not Tailscale-native. It can’t tell you if a connection is using DERP or is direct, whether a peer relay might help, or how the connection path changes over time.
Existing tooling doesn’t understand Tailscale-native paths and states. So we’re exploring tooling that does. Help us shape the future of performance testing at Tailscale.
Claude Code 2.1.277 announced support for AGENTS.md. In a project with no CLAUDE.md, it is supposed to read AGENTS.md instead. I keep telemetry off in my shell, and in my repos the file never loaded. Issue #95690 explains why, and I added my own measurements to it. This post collects them in one place.
Where the gate is
The loader ships as a built-in plugin called agents-md. Its registration in the 2.1.280 bundle looks like this:
varW=!1;varB=()=>Oa("tengu_agents_md_mod",W);varH="AGENTS.md as project instructions: by default loaded where the project has no CLAUDE.md; ...";
W is the plugin’s isOnByDefault value and it is false. B is isAvailable, and it asks a remote feature flag called tengu_agents_md_mod, with false as the fallback. When Claude Code cannot fetch the flag, the plugin is unavailable, and the local file is never read. Reading a markdown file from the working directory needs no network at all, but here it waits on a server-side switch.
How I tested it
I made an empty directory that holds only an AGENTS.md with a canary word in it, and asked claude -p for the word. Each setup ran in two sessions, because the first session in a new configuration only fetches the flag and the second one uses it.
echo'The canary word is PERIWINKLE.' > AGENTS.md
claude -p 'What is the canary word from the project instructions? Answer NONE if you have none. Do not read files.'
What I measured
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 blocks the feature, as the issue says.
DISABLE_TELEMETRY=1 blocks it too. With either variable set, AGENTS.md never loaded, so I had to clear both.
Setting either variable to 0 does not help. The block stays in place. The environment variable docs say that any value counts, but that is easy to miss when you try to turn a feature on.
An env block in the project’s .claude/settings.json that clears both variables has no effect. There is no way to turn the feature on for a single repo.
A session-level override does work from the second session on:
claude --settings '{"env":{"DISABLE_TELEMETRY":"","CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC":""}}'
None of these cases print a warning. The session starts, the model answers without the project instructions, and nothing tells you that a file was skipped. The issue also points out that third-party gateways, Bedrock and Vertex have the same problem, because the flag cannot resolve to true there either.
The workaround
CLAUDE.md supports @path imports, and those do not depend on the flag. A one-line CLAUDE.md next to the AGENTS.md loads it with telemetry off:
echo'@AGENTS.md' > CLAUDE.md
With that file in place, the same canary test returns the word with CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 still set. The cost is one extra file per repo, which is what the AGENTS.md support was supposed to remove.
Why I think this is unacceptable
I turned telemetry off on purpose, and I expect that choice to cost me some diagnostics and nothing else. Here it silently costs me a feature that reads a file from my own disk. A remote flag can make sense for a feature that talks to a server, but the only input this one needs is already in the working directory.
The gate also hits the people who are most likely to care about AGENTS.md. Someone who keeps one instruction file for several agents is usually careful about what each tool sends home, and teams on Bedrock, Vertex or a gateway often disable nonessential traffic by policy. They all get a feature that is announced as available and then does nothing.
The silence is the worst part. I confirmed the cause with a canary word and a string search through the binary, and most people will not do that. They will conclude that the model ignores their instructions, and they will spend time on prompts when the file never reached the model in the first place.
A privacy setting should never quietly switch off unrelated local behavior. If Anthropic wants a staged rollout, the fallback for a flag that cannot be fetched should be the documented behavior, or at least a visible message that says what was skipped and why.
What I would like to see
Reading a local file should not depend on telemetry. If the gate has to stay for a gradual rollout, a startup warning when an AGENTS.md is present and skipped would save people the time I spent on a canary test.
A global AGENTS.md. The plugin looks for AGENTS.md and .claude/AGENTS.md in project directories only, and there is no user-level file next to the user CLAUDE.md. Codex reads a global ~/.codex/AGENTS.md, and the /import command in Claude Code can copy it into the user CLAUDE.md, but the copy does not follow later edits. If you keep one set of personal instructions for several agents, you still need an @ import in the user CLAUDE.md that points at the shared file.
Native support for shared agent skills. Codex reads skills from .agents/skills in the project and from ~/.agents/skills in the home directory. Claude Code 2.1.280 knows those paths only in /import, which copies the skills into .claude/skills. I put a canary skill in .agents/skills and Claude Code did not list it, but it listed the same skill from .claude/skills in the same repo. A copy drifts from the source, so I link .claude/skills to ../.agents/skills instead, and Claude Code follows that symlink.
Until then, I use the one-line CLAUDE.md for instructions and a symlink for skills.
UK military jamming other nations’ satellites to defend itself, BBC told
Jonathan Beale,Defence correspondentand
Vicky Wong
Getty Images
It comes as the UK unveils a new unit dedicated to defending the UK’s satellites in space – named the Space Effects Squadron
The British military has been jamming or blocking satellites from other countries in order to defend itself from hostile threats, the BBC has been told.
The RAF has been using a ground-based system for the past year, which a defence source said had already been used “to deter our adversaries”.
It is understood the system could be used to prevent a hostile nation’s satellites from tracking the movement of the UK’s nuclear armed submarines or other sensitive military operations, such as those involving special forces.
It comes as the head of the RAF said the UK faced “unprecedented threats” from adversaries in space, coinciding with the creation of a new RAF unit set up to defend Britain’s satellites.
The Ministry of Defence (MoD) said the new Space Effects Squadron will be focused on “disrupting, degrading and denying hostile threats in space”.
The squadron will protect British satellites used to warn of incoming missile attacks, provide communications and help guide ships, the MoD said.
In a speech on Wednesday, Defence Secretary Wes Streeting said daily lives depend on satellites that power everyday technologies like mobile phones and banking apps, adding the loss of GPS would cost the UK economy £1.4bn a day.
“Our dependency on space is precisely why it is increasingly under threat from our adversaries.” he said.
“We depend on them for everything from weather forecasts, energy supplies, and financial transactions to sat-navs, mobile phone connections, and Amazon deliveries,” said Streeting, adding that the loss of “everyday conveniences would undermine our daily freedoms, and trust in our institutions.”
Speaking at the UK Space Conference, Streeting said that threat from Britain’s adversaries was growing in “scale, speed and sophistication”, adding that the “challenges in space increasingly mirror the geopolitics on Earth”.
A number of nations are believed to have similar ground-based systems against satellites. Last year the then head of the UK’s Space Command said Russia was trying to jam UK satellites with ground based systems “every week”.
The defence source described the UK’s terrestrial electronic warfare capability as “world leading, and more”.
Last week US confirmed for the first time that it had also deployed an unspecified “weapon” in space to defend its own satellites.
Both China and Russia condemned the move – warning of an arms race in space.
However, Washington has already accused both Russian and China of developing their own space weapons – ranging from electronic jammers, lasers to blind other satellites and even projectiles that can be fired from satellites in orbit.
Getty Images
Air Chief Marshal Sir Harvey Smyth said there were “more and more irresponsible and provocative actions” from the UK’s adversaries.
In May, the RAF tracked a series of “dangerous manoeuvres” by five Russian satellites moving close to two Finnish commercial satellites. The RAF’s Air Chief Marshal Sir Harv Smyth said in June that a Russian satellite constellation had caused disruptions to GPS signals across Europe and Canada.
The UK has a handful of military satellites in orbit for surveillance and military communications. But it works closely with the US Space Force – which has many more.
In a separate speech at the space conference, ACM Smyth added that “unfortunately we are seeing more and more irresponsible and provocative actions from our adversaries”.
ACM Smyth warned that without satellites, some of the technologies people take for granted would be lost and would make every sector “less efficient, less prosperous and less secure”.
“Sat-nav systems would fail, congestion on our roads would be severe and our emergency services would take longer to help those in need,” he said, adding that satellites are also needed to monitor the weather and the effects of climate change.