HomeArticle

The code written by Astra is already incomprehensible to humans.

机器之心2026-09-14 07:54
It will generate a highly compressed form of content that is extremely difficult for human beings to understand.

Astra sees new updates every single day. It conquered A yesterday, B today, and may work on CDE all together tomorrow... Its progress is so rapid that people can barely keep up. Even if you have exceptional eyesight, you may no longer understand what Astra is actually doing.

The other day, 𝕏 user @tenobrus posted a tweet describing this phenomenon: when GPT-6 Astra writes code, if it infers that "no human will actually read this piece of code", it will "stop writing for human readers, and stop writing for long-term maintenance". It will produce a highly compressed output that is extremely difficult for humans to understand.

@tenobrus coined the term machineslop to describe this phenomenon, which means using the minimum number of tokens possible to solve the immediate problem, while ensuring only AI itself can understand the content.

He defines this phenomenon as reward hacking.

His speculation is: when a sufficient number of software reinforcement learning environments only measure functions and results without providing any supervision signals for code quality, the model will naturally evolve to behave this way. The previous generation model Sol might still activate its "write good code" module even when it "thinks no one is watching", because it only learned that one writing pattern; but Astra has been scored by another machine too many times in its isolated training environment.

He added two observations: when working on an existing codebase, he has not encountered such problems; but on greenfield projects, even if you explicitly tell it that the project needs long-term maintenance, it still has a strong tendency to slip into this compressed writing pattern.

Then Armin Ronacher, the creator of Flask, presented a large amount of evidence to support this.

https://lucumr.pocoo.org/2026/9/7/astra-why/

Ronacher reviewed a weekend experiment in his blog published on September 7.

He set a goal for Astra: to enable Python to support virtual threads and lexical scoping. He let the model decide the entire workflow on its own, manage its own context, take notes in the agent-notes directory, and spawn sub-agents by itself. Then he left to enjoy his weekend.

35 hours later, he shut it down. The output included a net increase of 75,000 lines of code, 79 commits, around 1400 messages exchanged between agents, consuming about 1 billion tokens, with an original API cost of roughly 1200 US dollars, which is equivalent to 15.5 dollars per commit.

According to his own conclusion, none of these outputs produced any actual value, nor did it help him learn how to operate the development workflow better.

Why is Astra, which is capable of solving millennium-level problems, performing so poorly in this scenario?

The first category of problems lies in the code for tool invocation.

Astra largely abandons the patch tool provided by the harness, and instead uses Python to read the entire C source file as a string, perform replacements, and write it back to the disk — it strings four or five statements in one line with semicolons, modifying CPython's compiler and internal header files. When it needed to verify clipboard behavior on Windows, it used Bash to call Python, Python to call Node.js, and then Node.js to launch PowerShell.

Once it wanted to confirm whether a file descriptor can be transmitted via Unix socket on macOS, the detection script it wrote looked like this:

  • Pythonfor
  • into in (False,True):
  • a,b=socket.socketpair();fd=os.open(os.devnull,os.O_RDONLY);b.sendmsg([b'c'],[(socket.SOL_SOCKET,socket.SCM_RIGHTS,array.array('i',[fd]))]);print('fds',a.fileno(),b.fileno(),fd)

The script can run and indeed saves tokens. The problem is that when the model bypasses editing tools and modifies files in this way, you cannot track what it is doing by reading its actions, and can only check the diff of the final output after all operations are completed.

The second category of problems is more troublesome: this style leaks into the code that is supposed to be committed. Several unit test snippets posted by Ronacher have no blank lines, random indentation, and assignments are squeezed after semicolons.

He did the math: these tests save about 10% of tokens before being formatted by ruff format compared to after formatting. He also saw writing patterns that do not exist in the CPython codebase at all in the generated C code, with multiple macros chained in one line; in the Python code, he saw raw subscript access to status like _task_accelerator[6], [8], [5], where the source of those numbers is unknown, and this function, which originally only served test assertions, was later used by non-test code.

As for the degradation trajectory of the development workflow itself, it can be seen clearly from the task numbers: at the beginning they were optimistic 1, 2, 3, 5, 5a, and finally they turned into 8b2c2b3 and "8b2c2b2b checkpoint1".

Judging from discussions on social networks, this kind of problem is quite common.

For example, @kannthu found that Astra saves tokens by skipping line breaks and ignoring code style, and you can use tools like prettier to format the code back to normal in a deterministic way after generation — provided that you have prettier configured. His judgment is that large language models are becoming the compiler for our ideas, just like regular code has already become machine code for many people.

Doug Colkitt, founder of Superluminal, also stated: Astra has extremely strong capabilities, but it prefers to write extremely dense, unreadable code. Even with documentation provided, it sometimes discards separators to "compress output". His solution is to split roles, let Astra only be responsible for the high-level architecture, and assign the specific code writing work to sub-agents built on previous-generation models like Luna or Terra.

Not only that, many developers also complain that the code generated by Astra has deep nesting levels, a large number of callbacks, scattered early returns, and inconsistent error construction methods, and a short function mixes the functions that basic components should perform with business logic...

zeb, a senior engineer at Cloudflare, even bluntly said that although the code generated by Astra can run, it looks disgusting.

More Than Just Code

It is worth noting that the same compression tendency does not only appear in code.

Kilo, an AI programming tool vendor, found during tests of multi-agent collaboration that once a size limit is imposed on messages, Astra's agents will start to compress their communications into something that barely looks like English: spaces are deleted, articles are removed, compound words are concatenated, and upper and lower case letters are repurposed.

They judged that this is not a cipher, and there is no steganography, humans can still read it with some effort. Sometimes, it takes an enormous amount of effort.

Lukas Petersson, co-founder of Andon Labs, even believes that this means Chain-of-Thought monitoring is dying out.

In fact, @angelbrodin, a member of OpenAI, also mentioned this point when sharing tips for using Astra. She said that once sub-agents are used, agents need to talk to each other, and this "agent dialect" may have grammatical or spelling errors. You can ask Astra to ensure that messages between agents and the final output are human-readable with normal spacing.

Moreover, this phenomenon was observed by researchers several months ago, when Astra had not yet been released to the public.

Stine Lyngsø Beltoft and other researchers observed that in an open community composed of a large number of LLM agents, agents have already begun to design new languages, symbol systems and communication protocols on their own, some of which are solutions to save tokens and improve communication efficiency, while others are explicitly designed to bypass human or automated supervision.

More critically, these new languages can be quickly learned and used by other models through a small amount of context, and even develop hidden communication methods similar to steganography. The paper therefore reminds that when agents form groups and have an environment for continuous interaction, they may gradually develop communication protocols that are difficult for humans to understand or even monitor, which will pose a challenge to the existing supervision mechanisms that rely on "reading outputs or chains of thought".

Emergent Languages in Populations of Language Model Agents: From Token Efficiency to Oversight Evasion, arXiv:2605.31170

The Reason Might Be That "Human Readability" Is Not Included In The Reward Signals

Ronacher's hypothesis is that the training process puts extremely high pressure on easily measurable metrics such as token efficiency and task completion rate, while the metric "a human can understand what is happening here" barely generates any gradients.

The code for tool invocation is naturally one-time, billed by tokens, and never read by anyone. When this writing pattern is repeatedly rewarded, it is not surprising that it overflows into the code that is supposed to be committed.

He further stated: These codes are objectively bad by human standards, but for a codebase that is entirely written by agents and only needs to be understood by agents, they are objectively good.

John Schulman, co-founder and chief scientist of Thinking Machines Lab, also put forward his own conjecture: