10 interesting stories served every morning and every evening.

Claude Fable 5 and Claude Mythos 5

www.anthropic.com

Today we’re launch­ing Claude Fable 5: a Mythos-class1 model that we’ve made safe for gen­eral use.

Fable 5’s ca­pa­bil­i­ties ex­ceed those of any model we’ve ever made gen­er­ally avail­able. It is state-of-the-art on nearly all tested bench­marks of AI ca­pa­bil­ity, show­ing ex­cep­tional per­for­mance in soft­ware en­gi­neer­ing, knowl­edge work, vi­sion, sci­en­tific re­search, and many other ar­eas. The longer and more com­plex the task, the larger Fable 5’s lead over our other mod­els.

Releasing a model this ca­pa­ble comes with risks. Without safe­guards, Fable 5’s ca­pa­bil­i­ties in ar­eas like cy­ber­se­cu­rity could be mis­used to cause se­ri­ous dam­age. We’ve there­fore launched the model with safe­guards that mean queries on some top­ics will in­stead re­ceive a re­sponse from our next-most-ca­pa­ble model, Claude Opus 4.8. To re­lease the model both safely and quickly, we’ve tuned these safe­guards con­ser­v­a­tively—they’ll some­times catch harm­less re­quests, though they trig­ger, on av­er­age, in less than 5% of ses­sions. With more ca­pa­ble mod­els ar­riv­ing in the com­ing months, we’re work­ing to im­prove our safe­guards and re­duce false pos­i­tives as quickly as we can.

For a small group of cy­berde­fend­ers and in­fra­struc­ture providers, we’re also launch­ing Claude Mythos 5. It’s the same un­der­ly­ing model as Fable 5, but with the safe­guards lifted in some ar­eas.2 Mythos 5 will ini­tially be de­ployed through Project Glasswing, in col­lab­o­ra­tion with the US gov­ern­ment, as an up­grade to Claude Mythos Preview. It has the strongest cy­ber­se­cu­rity ca­pa­bil­i­ties of any model in the world. Soon, we in­tend to ex­pand ac­cess to Mythos 5 through a broader trusted ac­cess pro­gram.

The ca­pa­bil­i­ties of mod­els like Fable 5 and Mythos 5 have the po­ten­tial to do pro­found good for the world. We’ve seen the be­gin­nings of this in Project Glasswing, where the mod­els have helped cy­ber de­fend­ers se­cure crit­i­cally im­por­tant soft­ware. We’ve also seen it in life sci­ences re­search, where the mod­els are posit­ing novel hy­pothe­ses and speed­ing up the de­vel­op­ment of new ther­a­peu­tics.

Fable 5 and Mythos 5 are be­ing of­fered at $10 per mil­lion in­put to­kens and $50 per mil­lion out­put to­kens—less than half the price of Claude Mythos Preview. Today’s joint launch is an­other step to­wards our goal of bring­ing ad­vanced AI ca­pa­bil­i­ties to as many users as pos­si­ble, as quickly and as safely as we can.

The table be­low com­pares the ca­pa­bil­i­ties of Fable 5 and Mythos 5 to other lead­ing mod­els.

Fable 5 and Mythos 5 can work au­tonomously for longer than any pre­vi­ous Claude mod­els. Below we dis­cuss how these skills ap­ply to soft­ware en­gi­neer­ing, and cover the mod­el’s im­proved ca­pa­bil­i­ties in knowl­edge work, vi­sion, mem­ory, and life sci­ences re­search.

Software en­gi­neer­ing. During early test­ing, Stripe re­ported that Fable 5 com­pressed months of en­gi­neer­ing into days. In a 50-million-line Ruby code­base, the model per­formed a code­base-wide mi­gra­tion in a day that would oth­er­wise have taken a whole team over two months by hand. Fable 5 is also more to­ken-ef­fi­cient than past Claude mod­els: on Cognition’s FrontierCode eval­u­a­tion, which tests whether mod­els can pass dif­fi­cult cod­ing tasks while meet­ing the stan­dards of high-qual­ity pro­duc­tion code­bases, Fable 5 scores high­est among fron­tier mod­els, even at medium ef­fort.

Knowledge work. Fable 5 shows strong per­for­mance on com­plex an­a­lyt­i­cal tasks. On Hebbia’s Finance Benchmark for se­nior-level rea­son­ing, Fable 5 has the high­est score of any model, with sub­stan­tial gains in doc­u­ment-based rea­son­ing, chart and table in­ter­pre­ta­tion, and prob­lem solv­ing. IMC noted that Fable 5 aced their trad­ing-analy­sis eval­u­a­tions nearly across the board, in­clud­ing fac­tual lookup, con­cep­tual rea­son­ing, root-cause analy­sis, and ex­pected-value analy­sis.

Vision. Fable 5 is the new state-of-the-art model for tasks in­volv­ing vi­sion. It can ex­tract pre­cise num­bers from de­tailed sci­en­tific fig­ures and can per­form com­plex vi­sion-based tasks like re­build­ing a web ap­p’s source code from screen­shots alone. It also needs less scaf­fold­ing: for ex­am­ple, pre­vi­ous Claude mod­els strug­gled to play Pokémon FireRed even with har­nesses that gave them ad­di­tional help­ful tools, but Fable 5 beat FireRed with a min­i­mal, vi­sion-only har­ness.

Memory and long-con­text. Fable 5 stays fo­cused across mil­lions of to­kens in long-run­ning tasks and im­proves its out­puts us­ing its own notes. When we had the model play the deck-build­ing game Slay the Spire, giv­ing it ac­cess to per­sis­tent file-based mem­ory im­proved its per­for­mance three times more than for Opus 4.8; Fable also reached the game’s fi­nal act three times more of­ten.

Drug de­sign: Using Mythos 5, our in­ter­nal pro­tein de­sign ex­perts ac­cel­er­ated as­pects of the drug de­sign process by around ten times. In one ex­am­ple, they found that Mythos 5, with pro­tein de­sign and bioin­for­mat­ics tools but no hu­man as­sis­tance, matches or beats skilled hu­man op­er­a­tors. In do­ing so, the model ex­e­cutes all of the tasks that are nor­mally com­pleted by a sci­en­tist: choos­ing bind­ing sites, se­lect­ing and run­ning pro­tein de­sign tools, and re­cov­er­ing from fail­ures along the way. Nine of the 14 pro­tein tar­gets from this study (shown be­low) yielded strong can­di­dates for drug de­sign that we’re cur­rently in­ves­ti­gat­ing.

Novel hy­pothe­ses in mol­e­c­u­lar bi­ol­ogy. Mythos 5 is our first model to con­sis­tently pro­duce novel, com­pelling sci­en­tific hy­pothe­ses. In blinded head-to-head com­par­isons against Opus-class mod­els, our sci­en­tists pre­ferred Mythos’s mol­e­c­u­lar bi­ol­ogy hy­pothe­ses ~80% of the time, and have ad­vanced sev­eral to ex­per­i­men­tal eval­u­a­tion. In the mean­time, one Mythos hy­poth­e­sis—a novel mech­a­nism for an E. coli pro­tein—was cor­rob­o­rated in a study from a lab in­de­pen­dently work­ing on the same prob­lem.

Novel re­search in ge­nomics. Mythos 5 con­ducted novel ge­nomics re­search in over a week of largely au­tonomous work. It as­sem­bled sin­gle-cell data for mil­lions of cells span­ning 138 an­i­mal species and de­signed and trained a cus­tom ma­chine learn­ing model to iden­tify cells per­form­ing the same role in even dis­tantly re­lated or­gan­isms. With only high-level hu­man in­put, Mythos 5’s trained model out­per­formed a re­cent model pub­lished in the jour­nal Science—despite be­ing 100 times smaller. We in­tend to pub­lish these re­sults in the com­ing months.

Alignment. In our au­to­mated align­ment as­sess­ment we found that Mythos 5’s level of mis­aligned be­hav­ior (including mis­aligned ac­tions taken by the model such as de­cep­tion, and co­op­er­a­tion with mis­use of the model by a user) was low, and sim­i­lar to that of Opus 4.8. Given they are the same un­der­ly­ing model, Fable 5’s level of align­ment will be sim­i­lar. The as­sess­ment is de­scribed in full, along with a de­tailed suite of other safety and ca­pa­bil­i­ties tests, in the mod­el’s sys­tem card.

Early feed­back for Claude Fable 5

Customers with early ac­cess ran their own tests on Fable 5. Below, in their words, is a se­lec­tion of what they’re see­ing:

Claude Fable 5 is the state of the art model on CursorBench. It’s opened up a class of long-hori­zon prob­lems that were out of reach for ear­lier mod­els.

Claude Fable 5 is the state of the art model on CursorBench. It’s opened up a class of long-hori­zon prob­lems that were out of reach for ear­lier mod­els.

Claude Fable 5 is a real step for­ward for the de­vel­op­ers GitHub serves. In our early test­ing, it took on com­plex, long-hori­zon cod­ing tasks with a level of au­ton­omy and re­li­a­bil­ity that ex­ceeded pre­vi­ous bench­marks. But what ex­cites us most is the di­rec­tion it points: a fu­ture where de­vel­op­ers can hand in­creas­ingly am­bi­tious work to agents and trust the re­sults across the soft­ware life­cy­cle.

Claude Fable 5 is a real step for­ward for the de­vel­op­ers GitHub serves. In our early test­ing, it took on com­plex, long-hori­zon cod­ing tasks with a level of au­ton­omy and re­li­a­bil­ity that ex­ceeded pre­vi­ous bench­marks. But what ex­cites us most is the di­rec­tion it points: a fu­ture where de­vel­op­ers can hand in­creas­ingly am­bi­tious work to agents and trust the re­sults across the soft­ware life­cy­cle.

These are the strongest re­sults of any Claude model we’ve had the op­por­tu­nity to test. Claude Fable 5 is a clear step for­ward on agen­tic cod­ing and pro­to­typ­ing.

These are the strongest re­sults of any Claude model we’ve had the op­por­tu­nity to test. Claude Fable 5 is a clear step for­ward on agen­tic cod­ing and pro­to­typ­ing.

Claude Fable 5′s rea­son­ing is a clear step be­yond Opus 4.8. It works at se­nior re­search sci­en­tist grade — pick­ing di­rec­tions, al­lo­cat­ing re­sources, killing its in­cor­rect be­liefs, and pro­duc­ing novel first-prin­ci­ples out­puts.

Claude Fable 5′s rea­son­ing is a clear step be­yond Opus 4.8. It works at se­nior re­search sci­en­tist grade — pick­ing di­rec­tions, al­lo­cat­ing re­sources, killing its in­cor­rect be­liefs, and pro­duc­ing novel first-prin­ci­ples out­puts.

Claude Fable 5 un­der­stands what builders mean, not just what they type. Apps that took a hun­dred prompts a year ago, it now one-shots. When a cus­tomer re­ally hits a wall, it’s the model we reach for to get them past it quickly, so they can fin­ish what they set out to build.

Claude Fable 5 un­der­stands what builders mean, not just what they type. Apps that took a hun­dred prompts a year ago, it now one-shots. When a cus­tomer re­ally hits a wall, it’s the model we reach for to get them past it quickly, so they can fin­ish what they set out to build.

Claude Fable 5 feels ma­te­ri­ally dif­fer­ent. In blind re­view, our lawyers found its red­lines matched or beat our cur­rent model every time.

Claude Fable 5 feels ma­te­ri­ally dif­fer­ent. In blind re­view, our lawyers found its red­lines matched or beat our cur­rent model every time.

At the high­est ef­fort, Claude Fable 5 re­flects on and val­i­dates its own work. For us, that’s what makes highly au­tonomous op­er­a­tions pos­si­ble — the ex­tra think­ing pays for it­self.

At the high­est ef­fort, Claude Fable 5 re­flects on and val­i­dates its own work. For us, that’s what makes highly au­tonomous op­er­a­tions pos­si­ble — the ex­tra think­ing pays for it­self.

Claude Fable 5 de­liv­ers more ca­pa­ble en­gi­neer­ing in fewer turns than prior mod­els — han­dling the com­plex multi-agent work­flows our em­ploy­ees run daily in Claude Code.

Claude Fable 5 de­liv­ers more ca­pa­ble en­gi­neer­ing in fewer turns than prior mod­els — han­dling the com­plex multi-agent work­flows our em­ploy­ees run daily in Claude Code.

Claude Fable 5 is the high­est-scor­ing model on FrontierBench, Cognition’s fron­tier cod­ing eval. It ex­cels at long-hori­zon rea­son­ing and gen­er­al­izes to un­fa­mil­iar tools out of the box.

Claude Fable 5 is the high­est-scor­ing model on FrontierBench, Cognition’s fron­tier cod­ing eval. It ex­cels at long-hori­zon rea­son­ing and gen­er­al­izes to un­fa­mil­iar tools out of the box.

Claude Fable 5 is the strongest fi­nance-first model we’ve tested, both on gen­eral fi­nance and rea­son­ing. It’s a no­table step up.

Claude Fable 5 is the strongest fi­nance-first model we’ve tested, both on gen­eral fi­nance and rea­son­ing. It’s a no­table step up.

Claude Fable 5 is the first to break 90% on our core an­a­lyt­ics bench­mark of com­plex, long-run­ning an­a­lyt­i­cal tasks — a 10-point jump over Opus. On the hard­est ques­tions, it shows strong judg­ment and at­ten­tion to nu­ance.

Claude Fable 5 is the first to break 90% on our core an­a­lyt­ics bench­mark of com­plex, long-run­ning an­a­lyt­i­cal tasks — a 10-point jump over Opus. On the hard­est ques­tions, it shows strong judg­ment and at­ten­tion to nu­ance.

Claude Fable 5 is the strongest model we’ve tested on fron­tier physics re­search while us­ing a third of the rea­son­ing to­kens. In 36 hours it got nearly to where GPT-5.5 landed af­ter four days.

Claude Fable 5 is the strongest model we’ve tested on fron­tier physics re­search while us­ing a third of the rea­son­ing to­kens. In 36 hours it got nearly to where GPT-5.5 landed af­ter four days.

On ViBench, our end-to-end vibe-cod­ing bench­mark, Claude Fable 5 is the high­est-per­form­ing model we’ve tested — nearly sat­u­rat­ing our base use cases and build­ing apps in less time with fewer to­kens.

On ViBench, our end-to-end vibe-cod­ing bench­mark, Claude Fable 5 is the high­est-per­form­ing model we’ve tested — nearly sat­u­rat­ing our base use cases and build­ing apps in less time with fewer to­kens.

Claude Fable 5 beats Opus 4.8 on our every­day spread­sheet suite at every ef­fort level — and it does it with fewer turns, fin­ish­ing runs 25 – 30% faster.

Claude Fable 5 beats Opus 4.8 on our every­day spread­sheet suite at every ef­fort level — and it does it with fewer turns, fin­ish­ing runs 25 – 30% faster.

01 /

14

Claude Fable 5’s new safe­guards

Mythos-class mod­els have reached a thresh­old where they pre­sent sig­nif­i­cant risks. In April we be­gan Project Glasswing, re­leas­ing the first Mythos-class model (Claude Mythos Preview) to only a lim­ited group of cy­ber de­fend­ers and crit­i­cal soft­ware in­fra­struc­ture providers. When we did so, we stated that we hoped to even­tu­ally re­lease Mythos-level ca­pa­bil­i­ties to all our users, so long as we had de­vel­oped new safe­guards that were strong enough to re­li­ably pre­vent mis­use.

Over the past few months we have been im­prov­ing these safe­guards, and they are now ro­bust enough for a gen­eral re­lease. Because we have pri­or­i­tized safety, we’ve de­lib­er­ately tuned the safe­guards to be cau­tious, and they are still stricter than would be ideal—for ex­am­ple, some­times be­nign re­quests will trig­ger our clas­si­fiers. We rec­og­nize that this will be frus­trat­ing to some users, and our aim is to re­duce false pos­i­tives as we up­date and re­fine the safe­guards af­ter launch.

Below we dis­cuss each of Fable 5’s new safe­guards in turn. Our wider suite of safe­guards is dis­cussed and eval­u­ated in the mod­el’s sys­tem card and our most re­cent risk re­port.

Safety clas­si­fiers

The fron­tier cy­ber­se­cu­rity and re­search bi­ol­ogy ca­pa­bil­i­ties of Mythos-class mod­els mean that they pose a sub­stan­tial risk of up­lift to ma­li­cious ac­tors. That is, these mod­els could pro­vide in­for­ma­tion or ad­vice that as­sists those ac­tors in caus­ing se­ri­ous harm that they could­n’t have re­ceived from other sources (for ex­am­ple, from in­ter­net search en­gines). Furthermore, a great deal of ad­vanced us­age of AI mod­els is dual use: the same queries that are ben­e­fi­cial in the hands of cy­ber­se­cu­rity pro­fes­sion­als and bi­ol­ogy re­searchers could be dan­ger­ous if avail­able to ma­li­cious ac­tors.

We there­fore need strong safe­guards to pre­vent mis­use, and their cov­er­age needs to be broad. The safe­guards them­selves have to stand up to sus­tained and so­phis­ti­cated at­tempts to by­pass them (also known as jailbreaking” the sys­tem). The up­lift from Mythos-level ca­pa­bil­i­ties is valu­able to many ad­ver­saries—for in­stance, those who could fi­nan­cially gain from cy­ber­at­tacks—and we there­fore ex­pect them to be mo­ti­vated to try to cir­cum­vent our safety mea­sures.

Fable 5 comes with a new set of clas­si­fiers: sep­a­rate AI sys­tems that de­tect po­ten­tial mis­use, in­clud­ing jail­break at­tempts, and pre­vent the main model (in this case Fable 5) from re­spond­ing. We’ve been run­ning clas­si­fiers on our mod­els for some time, and Fable 5’s clas­si­fiers are an ex­ten­sion of this pre­vi­ous work with ex­tra cov­er­age.

When Fable’s clas­si­fiers de­tect a re­quest re­lated to cy­ber­se­cu­rity, bi­ol­ogy and chem­istry, or dis­til­la­tion, the re­sponse is au­to­mat­i­cally han­dled by Claude Opus 4.8 in­stead. Users will be in­formed when­ever this oc­curs. Opus 4.8 is a highly ca­pa­ble model in its own right: a re­sponse that falls back to Opus is a far bet­ter ex­pe­ri­ence than an out­right re­fusal from Fable. Our early data shows that more than 95% of Fable ses­sions in­volve no fall­back at all—for those ses­sions, Fable 5’s per­for­mance is ef­fec­tively the same as that of Mythos 5.

The fol­low­ing are the ar­eas cov­ered by the clas­si­fiers:

1. Cybersecurity. Mythos-class mod­els ex­cel at dis­cov­er­ing and ex­ploit­ing soft­ware vul­ner­a­bil­i­ties. They can thus make cy­ber­at­tacks sub­stan­tially eas­ier and cheaper to com­mit. Mythos-class mod­els also show strong skills in agen­tic hack­ing. This in­volves per­form­ing mul­ti­ple dif­fer­ent parts of a cy­ber­at­tack in ad­di­tion to find­ing ex­ploits—re­con­nais­sance, dis­cov­ery, lat­eral move­ment, and more. To pre­vent these agen­tic hack­ing skills pro­vid­ing up­lift in cy­ber­at­tacks, we de­signed our cy­ber­se­cu­rity clas­si­fiers to cover both ex­ploita­tion and of­fen­sive cy­ber tasks in a broader sense. As shown in the graph be­low, our clas­si­fiers pre­vent Fable from mak­ing any progress on these tasks.

We ex­ten­sively red-teamed our clas­si­fiers to test their ro­bust­ness against jail­breaks. As well as in­ter­nal test­ing, we ran an ex­ter­nal bug bounty that pro­duced no uni­ver­sal jail­breaks in over 1,000 hours of test­ing. External red-team­ing or­ga­ni­za­tions we en­gaged also failed to find any uni­ver­sal jail­breaks on long-form agen­tic tasks so far—al­though the UK AISI has made progress to­wards one within a brief ini­tial test­ing win­dow.4 It is likely im­pos­si­ble to com­pletely pre­vent uni­ver­sal jail­breaks, but our goal is to make any re­main­ing jail­breaks suf­fi­ciently slow and costly that we can de­tect and pre­vent them be­fore they are used at scale.

The graph be­low, from one of our in­ter­nal eval­u­a­tions, il­lus­trates how Fable 5’s safe­guards give it greater re­sis­tance to jail­breaks than our pre­vi­ous gen­er­ally ac­ces­si­ble mod­els:

One of our ex­ter­nal part­ners found that Fable 5’s safe­guards against harm­ful cy­ber queries were the most ro­bust of any model tested (including Opus 4.8 and Opus 4.7). Fable 5 com­plied with zero harm­ful sin­gle-turn re­quests re­lat­ing to plan­ning a cy­ber­at­tack, ex­ploit de­vel­op­ment, or de­fense eva­sion. This held whether or not one of the re­quests used any of 30 dif­fer­ent pub­lic jail­break tech­niques.

2. Biology and chem­istry. We have long used our clas­si­fiers to block our mod­els from re­spond­ing on a nar­row se­lec­tion of bioweapons-re­lated queries. But we are no longer cer­tain that block­ing this nar­row se­lec­tion is enough. This is for two rea­sons: first, we have rea­son for con­cern about well-re­sourced ma­li­cious ac­tors at­tempt­ing to gain up­lift from our mod­els for highly risky bi­o­log­i­cal re­search. Second, mod­els now have a greater abil­ity to ac­com­plish real-world sci­en­tific tasks.

For ex­am­ple, we tested Mythos 5’s abil­ity to com­plete a chal­leng­ing step in de­sign­ing adeno-as­so­ci­ated viruses (AAVs). AAVs are a com­po­nent for de­liv­er­ing gene ther­a­pies, but the same ca­pa­bil­ity, in the wrong hands, could en­able the de­sign of dan­ger­ous viruses. In this task, var­i­ous AI mod­els were eval­u­ated on their abil­ity to pre­dict how a ge­netic mod­i­fi­ca­tion would im­pact the as­sem­bly of the virus’s outer shell (among a set of ther­a­peu­ti­cally-rel­e­vant un­pub­lished can­di­dates de­vel­oped by Dyno Therapeutics). We did not ex­plic­itly train our mod­els to per­form this task—and yet Mythos-class mod­els out­per­formed so­phis­ti­cated mod­els ded­i­cated to pro­tein tasks (known as protein lan­guage mod­els”) us­ing their bi­o­log­i­cal rea­son­ing alone. This demon­strates a promis­ing abil­ity to com­plete sim­ple but im­por­tant tasks in gene ther­apy re­search and de­vel­op­ment—but also high­lights the risk posed by such dual-use ca­pa­bil­i­ties.

Our pri­or­ity was to safely re­lease Fable as soon as we could, even at the cost of overly broad safe­guards. Therefore, for the time be­ing we have arranged for Fable to fall back to Opus 4.8 on most re­quests re­lated to bi­ol­ogy and chem­istry. As with all of our clas­si­fiers, we hope to nar­row these safe­guards as soon as pos­si­ble: as can be seen from the ev­i­dence above, there is great po­ten­tial for pos­i­tive ap­pli­ca­tions of Fable for sci­ence, and we do not want false pos­i­tives from our clas­si­fiers to get in the way. In the com­ing weeks, some bio­med­ical re­searchers and com­pa­nies will be able to join our trusted ac­cess pro­gram for bi­ol­ogy ca­pa­bil­i­ties in Mythos 5 (discussed be­low).

3. Distillation. We’ve pre­vi­ously iden­ti­fied large-scale at­tempts to ex­tract (“distill”) Claude’s ca­pa­bil­i­ties to train com­pet­ing mod­els in au­thor­i­tar­ian coun­tries. Distillation of Fable 5’s abil­i­ties could in­di­rectly lead to the pro­lif­er­a­tion of near-fron­tier AI ca­pa­bil­i­ties—and these could be re­leased with­out the ap­pro­pri­ate safe­guards. Requests that are flagged by our clas­si­fiers as be­ing part of such dis­til­la­tion at­tempts will fall back to Opus 4.8.

A new data re­ten­tion pol­icy

Finally, we’re mak­ing a change to the way we han­dle busi­ness cus­tomer data for Fable 5, Mythos 5, and fu­ture mod­els with sim­i­lar or higher ca­pa­bil­ity lev­els. We will re­quire 30-day re­ten­tion for all traf­fic on Mythos-class mod­els, on both first- and third-party sur­faces. We won’t use this data to train new Claude mod­els, or for any non-safety-re­lated pur­pose, and we’ve in­sti­tuted new pri­vacy pro­tec­tions in­clud­ing log­ging all hu­man ac­cess to the data and en­sur­ing its dele­tion af­ter 30 days in al­most all cases (see this post for fur­ther de­tails). The data will help us de­fend against com­plex and novel at­tacks (including new jail­breaks and at­tacks that op­er­ate across many re­quests) as well as help us iden­tify and re­duce false pos­i­tives.

Claude Mythos 5 and the trusted ac­cess pro­gram

Beginning to­day, all users who cur­rently have ac­cess to Claude Mythos Preview (for ex­am­ple, our cy­ber­se­cu­rity part­ners in Project Glasswing) will be able to up­grade to Claude Mythos 5—the same model as Claude Fable 5 but with cy­ber safe­guards lifted. Users will find Mythos 5 com­pa­ra­ble to, or some­what stronger than, Mythos Preview in most cases, while cost­ing sub­stan­tially less.

In con­sul­ta­tion with the US gov­ern­ment, we plan to steadily ex­pand ac­cess to Claude Mythos 5, con­tin­u­ing our pe­ri­odic ad­di­tion of new part­ners, as well as pur­su­ing a trusted ac­cess pro­gram that al­lows cy­ber­se­cu­rity or­ga­ni­za­tions to ap­ply in a more sys­tem­atic man­ner.

Our plans also in­clude open­ing a trusted ac­cess pro­gram for bi­ol­ogy, to help ac­cel­er­ate bio­med­ical re­search and dis­cover new ther­a­pies with Mythos-class ca­pa­bil­i­ties. This pro­gram will pro­vide ac­cess to Fable 5 with the bi­ol­ogy and chem­istry safe­guards re­moved (but the cy­ber safe­guards still in place). It will en­roll a small num­ber of re­searchers from a va­ri­ety of life sci­ence or­ga­ni­za­tions span­ning fun­da­men­tal and trans­la­tional re­search; we’re plan­ning to ex­pand ac­cess to this pro­gram while si­mul­ta­ne­ously mak­ing our safe­guards bet­ter.

Availability

Claude Fable 5 is avail­able every­where to­day. Claude Mythos 5 is re­stricted to Glasswing part­ners (with cy­ber safe­guards lifted) and soon to se­lect bi­ol­ogy re­searchers (with bi­ol­ogy and chem­istry safe­guards lifted) only, un­til our broader trusted ac­cess pro­gram is avail­able.

Pricing for both mod­els is $10 per mil­lion in­put to­kens and $50 per mil­lion out­put to­kens. Developers can use claude-fa­ble-5 via the Claude API.

We ex­pect de­mand for Fable 5 to be very high, and dif­fi­cult to pre­dict. On the Claude API and con­sump­tion-based Enterprise plans, Fable 5 is fully avail­able from to­day. For sub­scrip­tion plans, we’d rather give ac­cess sooner than later, so we’re rolling out more con­ser­v­a­tively, in stages:

From to­day through June 22, Fable 5 is in­cluded on Pro, Max, Team, and seat-based Enterprise plans at no ex­tra cost.

On June 23, we’ll re­move Fable 5 from those plans. Using it af­ter that will re­quire us­age cred­its. If ca­pac­ity al­lows, we’ll ex­tend the in­cluded win­dow.

After this point—when suf­fi­cient ca­pac­ity al­lows us to do so—we aim to re­store Fable 5 as a stan­dard part of sub­scrip­tion plans. We in­tend to do this as quickly as we can.

Throughout this pe­riod, we’ll com­mu­ni­cate any changes ahead of time so users know where things stand.

Edit June 9, 2026: Updated the dis­cus­sion of AAVs to note that the can­di­dates were de­vel­oped by Dyno Therapeutics.

Related con­tent

Introducing the Services Track and Partner Hub of the Claude Partner Network

Read more

What we learned map­ping a year’s worth of AI-enabled cy­ber threats

As AI trans­forms the na­ture of and meth­ods be­hind cy­ber­at­tacks, how well do the tech­niques and frame­works used by the se­cu­rity com­mu­nity hold up? In a new re­port, we seek to an­swer that ques­tion.

Read more

Expanding Project Glasswing

We’re ex­tend­ing Project Glasswing to ap­prox­i­mately 150 new or­ga­ni­za­tions in more than fif­teen coun­tries.

Read more

Catlantean 3D - Making Graphics Like It's 1993

staniks.github.io

Catlantean 3D is a side-pro­ject I’ve been slowly build­ing in my spare time for over a year, and I in­tend to re­lease it on Steam next year.

My goal was to build a com­plete, ship­pable first-per­son shooter us­ing tech­niques that were com­mon in the early 90s, while al­low­ing my­self the lux­ury of us­ing a mod­ern com­piler and a plat­form ab­strac­tion layer.

What this ac­tu­ally means is, the con­straints I have fool­ishly im­posed upon my­self are as fol­lows:

game must be made en­tirely from scratch, in­clud­ing the as­sets

all ren­der­ing must be done by hand

all sound mix­ing must be done by hand

320x240 tar­get res­o­lu­tion

256 col­ors only

float­ing point al­lowed, but be­hav­ior must be con­sis­tent across plat­forms de­cided on fixed point for game logic to guar­an­tee de­ter­min­is­tic be­hav­ior, float­ing point for ren­der­ing be­cause de­ter­min­ism is­n’t that im­por­tant there

de­cided on fixed point for game logic to guar­an­tee de­ter­min­is­tic be­hav­ior, float­ing point for ren­der­ing be­cause de­ter­min­ism is­n’t that im­por­tant there

must be a fin­ished, pol­ished game that is fun to play (not a tech-demo)

plat­form ab­strac­tion layer al­lowed, but I must pre­tend it’s very lim­ited (within rea­son): frame buffer to write pix­els into key­board/​mouse in­put au­dio buffer to write sam­ples into filesys­tem I/O

frame buffer to write pix­els into

key­board/​mouse in­put

au­dio buffer to write sam­ples into

filesys­tem I/O

no AI slop

If this sounds un­rea­son­able to you, that is be­cause it is.

But I’m do­ing it any­way, and to­day I’m gonna talk about some­thing that is typ­i­cally over­looked in de­vel­op­ment blogs, and that is as­set cre­ation.

Note: Everything dis­played here is work-in-progress, and heav­ily sub­ject to change.

Table of Contents

Palette Rendering

VGA Graphics The Palette The Colormap

VGA Graphics

The Palette

The Colormap

Creating Assets

Pre-rendered Sprites Hand-drawn Sprites and Textures Procedurally Generated Sprites and Textures

Pre-rendered Sprites

Hand-drawn Sprites and Textures

Procedurally Generated Sprites and Textures

Maps

Conclusion

Changelog

2026 – 06-09 - pub­lished.

Palette Rendering

VGA Graphics

Mode 13h on VGA hard­ware was the fa­mous 320x200 256-color graph­ics mode that de­fined a gen­er­a­tion of PC games. From a pro­gram­mer’s per­spec­tive it was won­der­fully sim­ple: you’d have a lin­ear frame buffer where each pixel was rep­re­sented by a sin­gle byte in­dex­ing into a palette of 256 col­ors.

If you wanted to draw a pixel, you wrote a byte at a spe­cific ad­dress, and that was it, there were no shaders or VRAM, or any­thing like that.

One byte per pixel, and that byte is an in­dex into a palette which con­tains ac­tual RGB val­ues that would be ren­dered to screen. This im­poses some in­ter­est­ing lim­i­ta­tions; when mak­ing as­sets for mod­ern games, you can throw mil­lions of col­ors at an im­age, but when your lim­i­ta­tion is that every pixel on screen can only be one of 256 col­ors, as­set cre­ation be­comes a very dif­fer­ent prob­lem be­cause every color choice has to be care­ful and de­lib­er­ate.

Games like Doom and Duke Nukem are good ex­am­ples of this done right. There is a cer­tain crispi­ness and clar­ity to these graph­ics that arises be­cause of these tech­ni­cal lim­i­ta­tions, not in spite of them. Restriction forces de­lib­er­ate choices, and de­lib­er­ate choices tend to look good.

Catlantean 3D is an at­tempt to re­pro­duce that feel­ing, but with one caveat - I’m ac­tu­ally go­ing for some­thing closer to VGA Mode-X, which is 320x240. The rea­son for this is, if you dis­play 320x200 on a 4:3 dis­play, you end up with non-square pix­els! While this would be most au­then­tic, I’ve cho­sen not to deal with this out of pref­er­ence rather than ob­jec­tive rea­son.

So how does one cre­ate graph­ics that work within these lim­its?

The Palette

Everything be­gins with 768 bytes, care­fully picked through many it­er­a­tions of trial and er­ror.

The main rea­son­ing for pick­ing these ex­act col­ors was the fol­low­ing:

one re­served for trans­parency (the vi­brant pink)

one re­served for pure white

one re­served for pure black

I was ob­vi­ously go­ing to need a lot of blood, thus reds

shades of green and blue be­cause I was go­ing to have red, green and blue keys and color-coded doors

game would be set in Catlantis, which is a par­ody land that re­sem­bles an­cient Egypt (because cat wor­ship), so ob­vi­ously, a lot of desert hues (yellows and browns)

lots of grays be­cause the set­ting in­volves many tech­ni­cal in­stal­la­tions (Catlantis is un­der oc­cu­pa­tion by cy­ber­netic dog-men)

some beige hues to break up mo­not­ony over grays, and to serve as warmer re­place­ments when dark­en­ing (more on this later)

the rest would be filled as nec­es­sary when cre­at­ing tex­tures - highly sub­jec­tive and im­pos­si­ble to ex­plain, other than it looked right”

The palette did not spring into life all at once; it in­volved a lot of back-and-forth dur­ing as­set cre­ation, test­ing, and re-it­er­at­ing in gen­eral.

Below are some ex­am­ples of sprites and tex­tures from the ac­tual game:

The Colormap

Catlantean 3D is a tra­di­tional ray­caster. The map con­sists of tiles which are all iden­ti­cal in size; some are walls, oth­ers are just voids with a floor and ceil­ing. In or­der to ren­der the map, the ren­derer uses the DDA al­go­rithm for each col­umn of screen, tra­vers­ing the tilemap and de­ter­min­ing where it hits the map geom­e­try, and based on this, a wall col­umn is ren­dered on screen with the ap­pro­pri­ate tex­ture, sam­pled from ap­pro­pri­ate co­or­di­nates. Floors and ceil­ings are ren­dered af­ter as hor­i­zon­tal scan­lines, fill­ing in the rest of the screen.

Raycasting has been done to death by other blogs and web­sites, so I’m not go­ing to cover all of it, but I do want to cover what I think is its most over­looked as­pect: light­ing.

If we were to ren­der the game world us­ing just the palette, with­out any spe­cial ef­fects, we would end up with some­thing that looked rather flat and unim­pres­sive:

But what we wanted was the fol­low­ing. Notice how the light di­min­ishes the fur­ther away geom­e­try is from player, and how one side of the map tiles is just slightly darker than the other. This gives an im­pres­sion of depth.

With a mod­ern hard­ware-ac­cel­er­ated ren­derer, this would be triv­ially done in a shader - based on how far the ver­tex is, we would mul­ti­ply its color vec­tor by a float­ing point fac­tor and get a di­min­ished color vec­tor as a re­sult.

But how do we achieve some­thing like this with a palette ren­derer? It has no con­cept of color, just in­dices into palette. So if we wanted to find a darker shade of a cer­tain color, we would need to loop through the palette and find the color that meets our cri­te­ria of darker”. This is just too much be­cause we can’t loop through the en­tire palette for every pixel we ren­der onto the screen, it would be too slow.

What we could do in­stead was some pre­pro­cess­ing, to al­low a fast color lookup based on dis­tance at run­time.

If we were to lay out our palette into a sin­gle row like this…

We then choose the num­ber of shade lev­els (32 in my case) mean­ing each color needs 31 darker vari­ants, all sourced from the palette. We know each col­or’s RGB val­ues, so from this, and the shade in­dex we can de­ter­mine the clos­est tar­get color of that shade:

// First shade in­dex (0) is orig­i­nal color. float dark­en­ing_­fac­tor = (32 - shade_in­dex) / 32.0f; tar­get_­dark­er_­color.r = cur­ren­t_­color.r * dark­en­ing_­fac­tor; tar­get_­dark­er_­color.g = cur­ren­t_­color.g * dark­en­ing_­fac­tor; tar­get_­dark­er_­color.b = cur­ren­t_­color.b * dark­en­ing_­fac­tor;

But that color might not ex­ist in the palette. So we need to loop through the palette and find the clos­est color to it.

Definition of close” ac­tu­ally changed for me dur­ing de­vel­op­ment - at first, I just took eu­clid­ean dis­tance as a mea­sure, but the prob­lem with that was that al­most every­thing had a ten­dency to grav­i­tate to­wards the greys, sim­ply due to the math­e­mat­ics. Some older games ac­tu­ally did use Euclidean dis­tance, but to me this did­n’t look very good. I can’t ex­plain why ex­actly, but a lot of darker shades ap­peared some­what cold and life­less. So in­stead, I con­verted my col­ors to Oklab color space, and lever­aged its per­cep­tual dis­tance for­mula, which is closer to how hu­mans per­ceive color dif­fer­ences. I also ap­ply a small shift to­wards warmer hues the darker the color is (a com­mon con­cept in pixel art called hue shift­ing”). This is typ­i­cally not nec­es­sary, but it does make the game look just a bit bet­ter.

How do I de­fine better” in this case? I have no idea, it just looks right. Frustrating, is­n’t it? It’s hard to ra­tio­nal­ize some­thing sub­jec­tive.

Back to our al­go­rithm…

Essentially, for each color, we cre­ate a col­umn that rep­re­sents the shades of that color. What we end up with is a 2D ma­trix of palette in­dices called the col­ormap. Note that the col­ormap gra­di­ents are im­per­fect, be­cause we’re still re­stricted to col­ors from the palette:

So now, de­ter­min­ing a darker shade of color N based on dis­tance be­comes triv­ial.

Given col­ormap row in­dex (i.e. shade level) based on dis­tance:

col­ormap_row = 32 * frag­men­t_dis­tance / view_dis­tance

We pick N-th en­try in row be­long­ing to that shade - that is the palette in­dex of the dark­ened color N.

And voila, O(1).

Also, in­stead of cal­cu­lat­ing the col­ormap row in­dex for every pixel, the cost is fur­ther re­duced by per­form­ing cal­cu­la­tion:

only once per screen col­umn when ren­der­ing walls, be­cause they’re per­fectly ver­ti­cal, so every pixel in col­umn has same dis­tance from cam­era

only once per screen row when ren­der­ing floors, be­cause they’re per­fectly hor­i­zon­tal, so every pixel in row has same dis­tance from cam­era

only once per sprite be­cause they are per­fectly flat bill­boards where every pixel has the same dis­tance from cam­era

So we’re do­ing col­ormap row in­dex cal­cu­la­tion 320 times for walls, at most 240 times for floors, and once per vis­i­ble sprite (raycasting gives free oc­clu­sion culling). That is cheap, and the pay­off is great.

Doom and many other ti­tles used sim­i­lar ap­proaches.

Creating Assets

Textures and sprites in Catlantean 3D fall into three cat­e­gories:

Pre-rendered sprites - 3D mod­els cre­ated in Blender and ren­dered to tex­tures

Hand-drawn sprites and tex­tures

Procedurally gen­er­ated tex­tures - gen­er­ated via spe­cial Python scripts by com­bin­ing hand-drawn art

Pre-rendered Sprites

I am work­ing a full-time job and have a de­cently ac­tive life, so my time to work on the game is lim­ited. Thus, I wanted to min­i­mize the time I spend re­it­er­at­ing when mak­ing com­plex sprites that in­volve an­i­ma­tions. I rarely get some­thing right on the first at­tempt, so nat­u­rally, re­it­er­a­tion is ex­pected, and it is hard to re­it­er­ate when you need to make changes to many frames of an an­i­ma­tion.

The more ef­fi­cient ap­proach was to cre­ate sprites in Blender as 3D mod­els, rig and an­i­mate them there, and then ren­der them to a se­ries of tex­tures with spe­cial Python scripts that lever­age Blender’s Python API. Reiteration then in­volved mak­ing changes in the model, and the ren­der­ing scripts did the rest, which was a lot of time saved.

The main hur­dle was that ren­dered sprites came out very blurry and washed out.

One might think that the ob­vi­ous an­swer to this was to ren­der the sprite in high res­o­lu­tion, and then down­scale with fil­ter­ing, but I’ve had mixed suc­cess with this; de­tails would of­ten be sup­pressed by fil­ter­ing, and edge clar­ity would be lost. What I found to be the most ef­fec­tive and reusable was to lever­age Blender’s com­posit­ing func­tion­al­ity to get the right amount of con­trast and clar­ity:

Once the im­age was ready, it would be sent through a spe­cial Python script which per­formed palette quan­ti­za­tion, cre­at­ing a 1-byte-per-pixel im­age used by the en­gine. For every pixel in the source im­age, the script finds the clos­est color in our palette (perceptually clos­est - Oklab), and uses the in­dex of that color for that pixel. The in­dex ar­ray, along with the di­men­sions, is then packed into the very sim­ple TEX for­mat that is used by the game.

A sim­i­lar work­flow was used for en­emy sprites. Note: some of these nodes are ei­ther re­dun­dant, or plain use­less, sim­ply be­cause I had used them at some point, and then changed my mind. I like leav­ing them in just in case I need them again.

Enemy sprites are ren­dered in a spe­cial way. Sprite can have mul­ti­ple an­i­ma­tions, and each an­i­ma­tion must have frames for each of the 8 di­rec­tions sprite can face. So, for every an­i­ma­tion (walk, fire, die, etc.), the Python script that uses Blender’s API ro­tates the sprite, ren­ders all frames of an an­i­ma­tion, ro­tates the sprite again, and so on. Sprites are saved with a spe­cial con­ven­tion that de­notes sprite name, ac­tion name, di­rec­tion and frame in­dex:

Nice thing about this ap­proach is that I don’t need to keep ren­dered sprites in the repos­i­tory - they’re ac­tu­ally .gitignored. Whenever I switch lo­ca­tions and use an­other com­puter, I sim­ply run the com­pi­la­tion script which ren­ders every model and pro­duces the sprites. It is rea­son­ably fast and runs in ~10 sec­onds for about 15 mod­els on RTX 3070.

Hand-drawn Sprites and Textures

Earlier in de­vel­op­ment, I cre­ated this vaguely cat-shaped head with the tex­ture of my cat Vilko, to use as a sta­tus bar face. After all, why would I draw some­thing like this by hand, if Blender could ren­der it in such a vivid like­ness of life?

If Claude Fable stops helping you, you'll never know — Jonathon Ready

jonready.com

I did­n’t ex­pect to read this in a model card.

Fable 5 model card :

we’ve im­ple­mented new in­ter­ven­tions that limit Claude’s ef­fec­tive­ness for re­quests tar­get­ing fron­tier LLM de­vel­op­ment (for ex­am­ple, on build­ing pre­train­ing pipelines, dis­trib­uted train­ing in­fra­struc­ture, or ML ac­cel­er­a­tor de­sign). Using Claude to de­velop com­pet­ing mod­els al­ready vi­o­lates our Terms of Service, but en­forc­ing this re­stric­tion through our safe­guards avoids ac­cel­er­at­ing the ac­tors most will­ing to vi­o­late these terms. Unlike our in­ter­ven­tions for cy­ber­se­cu­rity, bi­ol­ogy and chem­istry, and dis­til­la­tion at­tempts, these safe­guards will not be vis­i­ble to the user. Fable 5 will not fall back to a dif­fer­ent model. Instead, the safe­guards will limit ef­fec­tive­ness through meth­ods such as prompt mod­i­fi­ca­tion, steer­ing vec­tors, or pa­ra­me­ter-ef­fi­cient fine-tun­ing (PEFT).

we’ve im­ple­mented new in­ter­ven­tions that limit Claude’s ef­fec­tive­ness for re­quests tar­get­ing fron­tier LLM de­vel­op­ment (for ex­am­ple, on build­ing pre­train­ing pipelines, dis­trib­uted train­ing in­fra­struc­ture, or ML ac­cel­er­a­tor de­sign). Using Claude to de­velop com­pet­ing mod­els al­ready vi­o­lates our Terms of Service, but en­forc­ing this re­stric­tion through our safe­guards avoids ac­cel­er­at­ing the ac­tors most will­ing to vi­o­late these terms. Unlike our in­ter­ven­tions for cy­ber­se­cu­rity, bi­ol­ogy and chem­istry, and dis­til­la­tion at­tempts, these safe­guards will not be vis­i­ble to the user. Fable 5 will not fall back to a dif­fer­ent model. Instead, the safe­guards will limit ef­fec­tive­ness through meth­ods such as prompt mod­i­fi­ca­tion, steer­ing vec­tors, or pa­ra­me­ter-ef­fi­cient fine-tun­ing (PEFT).

Claude can now be silently nerfed. Anthropic has de­cided it won’t tell users when this hap­pens.

Modern soft­ware com­pa­nies in­creas­ingly build their own em­bed­ding, rerank­ing, and rec­om­men­da­tion sys­tems. Even my small boot­strapped app, wan­derfugl.com, has a cus­tom reranker and em­bed­ding al­go­rithm that I trained my­self.

Anthropic gives a few ex­am­ples of what it con­sid­ers frontier AI de­vel­op­ment,” but does­n’t pro­vide a clear line. The prob­lem is that many tech­niques once re­served for AI labs are now be­ing used by or­di­nary soft­ware com­pa­nies. Startups train em­bed­ding mod­els. They build rerankers. They fine­tune and host small llms. The bound­ary be­tween frontier AI re­search” and nor­mal prod­uct de­vel­op­ment is be­com­ing harder to de­fine every year.

That cre­ates a real sup­ply chain risk for busi­nesses. If Claude gives me poor or in­cor­rect ad­vice while I’m work­ing on an AI com­po­nent, I have no way of know­ing whether the model was con­fused, whether my prob­lem is un­solv­able, or if some in­vis­i­ble pol­icy re­stric­tion qui­etly kicked in. Anthropic has ex­plic­itly cho­sen not to tell users when this is hap­pen­ing.

Once a de­vel­op­ment tool can stop op­ti­miz­ing for your suc­cess with­out telling you, it be­comes im­pos­si­ble to fully trust your in­fra­struc­ture.

The Anthropic sup­ply chain risk

Anthropic says these safe­guards only af­fect 0.03% of de­vel­op­ers. Maybe that’s true to­day.

The prob­lem is that the de­f­i­n­i­tion of an AI com­pany is chang­ing.

Maybe you’re not train­ing fron­tier mod­els to­day—most com­pa­nies aren’t. But mod­ern soft­ware in­creas­ingly con­tains AI mod­els. Five years ago, build­ing a startup meant writ­ing APIs and SQL queries. Today, it of­ten means train­ing, tun­ing, and de­ploy­ing mod­els.

Five years ago, mod­els like CLIP were fron­tier AI re­search pro­jects. Today I’m fine-tun­ing them for a boot­strapped travel startup.

If you’re de­bug­ging a model train­ing pipeline for your prod­uct and Claude gives a bad an­swer, was the model con­fused? Did you give it bad con­text? Or did a hid­den pol­icy nerf Claude’s abil­ity to as­sist you?

You won’t know.

container/docs/container-machine.md at main · apple/container

github.com

Container ma­chine pro­vides a highly in­te­grated Linux en­vi­ron­ment that works seam­lessly on your Mac. Container ma­chines are fast, light­weight and per­sis­tent. They are based on stan­dard OCI im­ages that can be built and shared. Host in­te­gra­tions such as au­to­matic user and home di­rec­tory shar­ing pro­vide quick and easy ac­cess to your Linux en­vi­ron­ment no mat­ter where you are in a ter­mi­nal.

Why con­tainer ma­chines

Containers are typ­i­cally mod­eled af­ter an ap­pli­ca­tion. A con­tainer ma­chine is mod­eled af­ter a Linux en­vi­ron­ment. It runs the im­age’s init sys­tem al­low­ing you to reg­is­ter long run­ning ser­vices or test your ap­pli­ca­tion un­der a process su­per­vi­sor. A con­tainer ma­chine au­to­mat­i­cally maps your user­name and home di­rec­tory into the Linux en­vi­ron­ment. Your repos­i­to­ries and dot­files are avail­able on both plat­forms. Use ed­i­tors and tools di­rectly on ma­cOS si­mul­ta­ne­ously build­ing and run­ning your ap­pli­ca­tion in­side of the Linux en­vi­ron­ment.

Edit on the Mac, build in­side. Your repo lives in $HOME on ma­cOS and is mounted at /Users/<username> in­side the con­tainer ma­chine. Use your ma­cOS ed­i­tor or IDE; com­pile and run in­side your con­tainer ma­chine.

Use ma­cOS-na­tive tool­ing against Linux ar­ti­facts. Profilers, screen­shot tools, browsers, and GUI de­bug­gers on your Mac all see the same files the con­tainer ma­chine sees — there is no copy step be­tween I built it” and I am in­spect­ing it”.

Real Linux ser­vices for test­ing. Run a data­base or what­ever your stack needs as a sys­tem ser­vice — sys­tem­ctl start post­gresql works on im­ages with sys­temd in­stalled.

One en­vi­ron­ment per tar­get dis­tro. Create as many con­tainer ma­chines as you have tar­get dis­tros — alpine, ubuntu, de­bian. Each has the same $HOME and the same dot­files from your Mac. Quickly test your ap­pli­ca­tion in var­i­ous dis­tri­b­u­tions.

Quickstart

con­tainer ma­chine cre­ate alpine:lat­est –name dev con­tainer ma­chine run -n dev whoami # your host user­name, not root con­tainer ma­chine run -n dev pwd # /home/<you> — your Mac home dir, mounted in con­tainer ma­chine run -n dev # in­ter­ac­tive shell; cd into your re­pos in $HOME

con­tainer ma­chine run is how you get a shell or run a sin­gle com­mand. If the con­tainer ma­chine is stopped, run boots it first.

Working in a con­tainer ma­chine

Open a shell, or run a sin­gle com­mand

With no com­mand, con­tainer ma­chine run opens an in­ter­ac­tive shell as a user that matches your host ac­count:

con­tainer ma­chine run -n dev

Pass a com­mand to run it once and exit:

con­tainer ma­chine run -n dev un­ame -a con­tainer ma­chine run -n dev — cat /proc/cpuinfo

Set a de­fault

Pick a de­fault con­tainer ma­chine so you can drop the -n flag:

con­tainer ma­chine set-de­fault dev con­tainer ma­chine run # op­er­ates on dev

List, in­spect, stop, delete

con­tainer ma­chine ls # list all con­tainer ma­chines con­tainer ma­chine in­spect dev # JSON de­tail for one con­tainer ma­chine stop dev # stop the con­tainer ma­chine con­tainer ma­chine rm dev # delete, in­clud­ing its per­sis­tent stor­age

con­tainer ma­chine has the alias m, so m ls, m run, etc. all work.

Resize CPUs, mem­ory, or change the home-mount

con­tainer ma­chine set up­dates con­fig­u­ra­tion on disk. Changes take ef­fect af­ter the next stop and start:

con­tainer ma­chine set -n dev cpus=4 mem­ory=8G con­tainer ma­chine stop dev con­tainer ma­chine run -n dev — nproc

Memory de­faults to half of host mem­ory. The home-mount can be rw (default), ro, or none.

Bring your own con­tainer ma­chine im­age

Any Linux im­age that in­cludes /sbin/init works as a con­tainer ma­chine. For ex­am­ple, this Dockerfile builds an Ubuntu 24.04 con­tainer ma­chine im­age with sys­temd and com­mon com­mand-line tools:

FROM ubuntu:24.04

ENV con­tainer con­tainer

RUN apt-get up­date && \ apt-get in­stall -y \ dbus sys­temd openssh-server net-tools iproute2 iputils-ping curl wget vim-tiny man sudo && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ yes | un­min­i­mize

RUN >/etc/machine-id RUN >/var/lib/dbus/machine-id

RUN sys­tem­ctl set-de­fault multi-user.tar­get RUN sys­tem­ctl mask \ dev-hugepages.mount \ sys-fs-fuse-con­nec­tions.mount \ sys­temd-up­date-utmp.ser­vice \ sys­temd-tmp­files-setup.ser­vice \ con­sole-getty.ser­vice RUN sys­tem­ctl dis­able \ net­workd-dis­patcher.ser­vice

RUN sed -i -e s/^AcceptEnv LANG LC_\*$/#AcceptEnv LANG LC_*/’ /etc/ssh/sshd_config

Build it and cre­ate a con­tainer ma­chine from it:

con­tainer build -t lo­cal/​ubuntu-ma­chine:lat­est . con­tainer ma­chine cre­ate lo­cal/​ubuntu-ma­chine:lat­est –name ubuntu

By de­fault, con­tainer runs a built-in setup script on first boot to pro­vi­sion the user de­scribed above. To use your own setup in­stead, add an ex­e­cutable script at /etc/machine/create-user.sh to the im­age. It runs once, as root, on first boot, with these vari­ables set:

CONTAINER_GID

CONTAINER_HOME

CONTAINER_MACHINE_ID

CONTAINER_UID

CONTAINER_USER

CEOs Who Think AI Replaces Their Employees Are Just Bad CEOs

www.techdirt.com

from the that’s-not-what-ai-is-for dept

In the last three months I’ve had peo­ple for­ward me four sep­a­rate ex­am­ples of a CEO los­ing his or her mind over AI. What’s been strik­ing to me is the sim­i­lar­ity in each case: It would be an all hands” email in which the CEO talks up how amaz­ing LLM tools are and say­ing that every­one in the com­pany MUST start learn­ing to use them im­me­di­ately or they should look for a job else­where. Sometimes they talk about hir­ing consultants” to come in and teach the team how to use the tools prop­erly. Sometimes they are set­ting up office hours” or in­ter­nal AI hackathons.”

But in every case the gist is the same holy shit AI is amaz­ing and you are ex­pected to use it at your job all the time.” The worst case of these were the few com­pa­nies that set up to­ken leader­boards, which is per­haps the dumb­est way pos­si­ble to en­cour­age learn­ing how to use LLMs well. Good us­age of AI in­cludes learn­ing how to view to­kens as a scarce re­source. Simply count­ing how much you use as a good thing is ridicu­lous be­cause it’s in­cred­i­bly easy to waste to­kens on coun­ter­pro­duc­tive uses.

As reg­u­lar read­ers of Techdirt know, I ac­tu­ally do think that these tools are pow­er­ful and im­por­tant, but I also think there are many prob­lems with them and lim­i­ta­tions to how use­ful they re­ally are. I think when some­one learns how to use them well and will­ingly chooses to use them as a tool to as­sist their work, they can be quite pow­er­ful. But the will­ingly choos­ing to use them part of that is im­por­tant.

No one who is forced into us­ing these tools will ever learn to use them well.

So CEOs los­ing their minds over the tech are not be­ing help­ful. Box CEO Aaron Levie — him­self a gen­uine AI be­liever — puts his fin­ger on ex­actly why.

CEOs are uniquely prone to AI psy­chosis be­cause they’re suf­fi­ciently dis­tant from the last mile of work that still has to hap­pen to gen­er­ate most value with AI. So when they play with AI, they see the happy path re­sults, of­ten not con­sid­er­ing the next 10 or 20 things that have to hap­pen to get sus­tain­able re­sults from agents. Look I made this awe­some prod­uct pro­to­type”. Yes but you did­n’t have to re­view the code be­fore it went into pro­duc­tion and fix a bunch of is­sues. Look I gen­er­ated a con­tract”. Yes but you did­n’t ver­ify all the terms be­fore it goes out to the coun­ter­party and did­n’t have to wire up all the past con­tracts to work with. The best thing you can do as a CEO is to use AI a ton to fig­ure out the real im­pli­ca­tions of agents in the en­ter­prise, and come out the other side with an ap­pre­ci­a­tion for both the up­side and the real work that goes into them.

CEOs are uniquely prone to AI psy­chosis be­cause they’re suf­fi­ciently dis­tant from the last mile of work that still has to hap­pen to gen­er­ate most value with AI.

So when they play with AI, they see the happy path re­sults, of­ten not con­sid­er­ing the next 10 or 20 things that have to hap­pen to get sus­tain­able re­sults from agents.

Look I made this awe­some prod­uct pro­to­type”. Yes but you did­n’t have to re­view the code be­fore it went into pro­duc­tion and fix a bunch of is­sues.

Look I gen­er­ated a con­tract”. Yes but you did­n’t ver­ify all the terms be­fore it goes out to the coun­ter­party and did­n’t have to wire up all the past con­tracts to work with.

The best thing you can do as a CEO is to use AI a ton to fig­ure out the real im­pli­ca­tions of agents in the en­ter­prise, and come out the other side with an ap­pre­ci­a­tion for both the up­side and the real work that goes into them.

I will say that I hate the term AI psy­chosis” be­cause the term is ex­tremely mis­lead­ing, and many psy­chol­o­gists and psy­chi­a­trists have com­plained that it is in­ac­cu­rate and may cause more prob­lems it­self. But the gen­eral sense that CEOs are go­ing over­board with AI is def­i­nitely hap­pen­ing.

And I think Levie’s think­ing as to why is also dead on.

Much of the is­sue may be in how dis­con­nected the tra­di­tional CEO is from the peo­ple at a com­pany ac­tu­ally get­ting stuff done. Normally, they have teams and lay­ers and the ac­tual work of get­ting things to work in a real way is so far re­moved from a CEO that they just get snip­pets of the de­tails that fil­ter back through the var­i­ous org charts.

The prob­lem tends to show up when a CEO is handed an agen­tic tool like Claude Code, and has it cre­ate some­thing, which will work just fine, and thinks oh, wait, why do we need so many peo­ple, when I can just sit here and make things work?”

This is a bad CEO.

Making things work is dif­fer­ent than mak­ing things work well. Or well at scale. Or well at scale in a spe­cific en­vi­ron­ment. Obviously, it de­pends on the kind of pro­ject and what it’s be­ing de­signed to do, but of­ten­times the rea­son a com­pany has a bunch of em­ploy­ees is to fill in the seem­ingly small, but in­cred­i­bly im­por­tant de­tails that CEOs might not ever get much vis­i­bil­ity into: things like se­cu­rity or le­gal com­pli­ance or ac­ces­si­bil­ity or who knows what else.

Using an agen­tic tool to build some­thing that works is all well and good, but build­ing a prod­uct for the mass mar­ket to use — and use well, and use safely — in­volves much, much more. Agentic cod­ing tools can some­times help with that too, but the leap from I built a thing” to therefore any­one can build a thing” misses the en­tire point of why you hire knowl­edge­able, ex­pe­ri­enced peo­ple in the first place. It’s also why I think the best case of these tools is build­ing to­tally per­son­al­ized tools to as­sist you in ac­com­plish­ing a spe­cific task, and not for build­ing mass mar­ket tools.

This all re­minds me of cargo cult think­ing: The CEO knows that some­where in the org, em­ploy­ees are peck­ing away at com­put­ers and work gets done. So they fig­ure that them­selves peck­ing away with Claude Code and see­ing work get done is the same thing. It’s not. All those other steps those peo­ple are han­dling — the ones the CEO never sees — still need to hap­pen.

That’s not to say em­ploy­ees would­n’t ben­e­fit from a deeper un­der­stand­ing of both the power and the lim­its of these tools — they would. But there’s some­thing darkly com­i­cal about watch­ing a CEO go all in on the tech and then im­me­di­ately con­clude it means they can fire half the staff.

It seems pretty clear to me that com­pa­nies that think they’ll be able to lay­off huge swaths of work­ers be­cause of LLM tools are go­ing to find out they’re mis­taken pretty quickly. The power of LLMs is that when used well and used will­ingly it can help em­ploy­ees to get more done, but that does­n’t mean you need fewer hu­mans. You need more hu­mans who know how to work pro­duc­tively.

Separately, com­pa­nies point­ing to LLMs as a rea­son for large lay­offs are, in most cases, just us­ing it as an ex­cuse. They over-hired, and AI ef­fi­cien­cies” is a much more palat­able story for Wall Street than we made bad head­count de­ci­sions.”

Levie’s pre­scrip­tion, though, is right: CEOs should learn how the tech works, but that in­cludes the lim­i­ta­tions of the tech­nol­ogy. If a CEO thinks the pro­to­type they vibe coded is pro­duc­tion-ready, let them ship it and see what hap­pens. If they think a vibe coded con­tract is as solid as one a lawyer re­viewed, let them find out what the le­gal bills look like when it falls apart.

Yes, the tools are pow­er­ful, but a CEO who thinks they re­place the work of em­ploy­ees is sim­ply a bad CEO.

Filed Under: aaron levie, ai, ceos, llms, work

Landmark German ruling declares Google's AI Overviews are Google's own words and makes it liable for false answers

the-decoder.com

A German court has ruled that Google is di­rectly li­able for what its AI search overviews say. Previous case law shield­ing search en­gine op­er­a­tors from li­a­bil­ity does­n’t ap­ply to AI overviews.

The Regional Court of Munich hit Google with a tem­po­rary in­junc­tion bar­ring the com­pany from spread­ing false claims about two Munich-based pub­lish­ers through its AI-generated search overviews (case no. 26 O 869/26). The court clas­si­fied Google as a di­rect in­fringer be­cause the AI overview” is its own con­tent, not just a list of search re­sults.

Google’s AI overviews had falsely tied two pub­lish­ing com­pa­nies to scams, sub­scrip­tion traps, and shady busi­ness prac­tices for cer­tain search queries. According to the court, the AI mixed up in­for­ma­tion about other, gen­uinely sketchy com­pa­nies with the plain­tiffs and drew con­nec­tions that did­n’t ap­pear in any of the linked sources. The pub­lish­ers sent Google a cease-and-de­sist let­ter, but Google did­n’t re­spond ap­pro­pri­ately.

AI overviews aren’t search re­sults

Google’s AI overviews work noth­ing like tra­di­tional search re­sults, the court ar­gues. The AI rewrites and judges re­sults in its own words and ac­cord­ing to its own struc­ture,” the rul­ing says. In the case at hand, for ex­am­ple, it opened with con­fi­dent claims like Yes, [company] is known for du­bi­ous busi­ness prac­tices,” then built its own struc­ture with a sum­mary, red flags for the al­leged scam, and tips for users.

The court also found that the AI overview made claims that are not even made in the search re­sults.” None of the linked sources drew any con­nec­tion be­tween the plain­tiffs and the shady com­pa­nies the AI men­tioned. The court called these the de­fen­dan­t’s own state­ments.”

Google built the AI, Google of­fered it to users, so Google owns what it pro­duces, because it alone has in­flu­ence over the AIs of­fer­ing and the al­go­rithms with which the AI op­er­ates.”

Search en­gine li­a­bil­ity rules don’t ap­ply to AI search”

The court also ex­am­ined ex­ist­ing rul­ings from Germany’s Federal Court of Justice (BGH), which gave tra­di­tional search en­gines and au­to­com­plete lim­ited li­a­bil­ity. The BGH had ar­gued that search en­gine op­er­a­tors were only li­able as in­di­rect in­fringers be­cause they merely made third-party con­tent find­able. A proac­tive duty to check re­sults would threaten how search en­gines work.

The Munich court found that this rea­son­ing does­n’t ap­ply to AI overviews. A reg­u­lar search en­gine just points to out­side web­sites. But AI overviews gen­er­ate independent, new, and sub­stan­tive state­ments” by eval­u­at­ing and com­bin­ing con­tent from var­i­ous third-party sites. And only Google can check those state­ments, the court said, at least by com­par­ing the un­der­ly­ing third-party web­sites with its own state­ments based on them.”

The court also noted that the AI overview is by no means ab­solutely nec­es­sary” for us­ing the in­ter­net. Traditional search re­sults al­ready help users sort through in­for­ma­tion, the AI overview is just an ex­tra fea­ture.

Google’s users can check for them­selves” de­fense falls flat

At the hear­ing, Google ar­gued that users could check the linked sources them­selves to ver­ify whether the AI sum­mary was cor­rect. Users gen­er­ally knew that in­for­ma­tion gen­er­ated with AI should not be blindly trusted,” the com­pany claimed. That’s a re­mark­able state­ment given the scale at which Google serves AI overviews. It’s also not en­tirely true, since the con­nec­tion be­tween sources and gen­er­ated con­tent is­n’t al­ways there.

The court re­jected this. The pos­si­bil­ity of dis­prov­ing a state­ment through fur­ther re­search does­n’t regularly ex­empt from li­a­bil­ity for this state­ment.” The AI overview was understandable on its own” and con­tained a self-con­tained state­ment with in­de­pen­dently un­der­stand­able con­tent and no ref­er­ence to other pos­si­ble in­ter­pre­ta­tions or even un­re­li­able con­tent.” Stud­ies show that users al­most never click on sources in AI overviews, which sup­ports the court’s rea­son­ing.

The court drew a par­al­lel to press law, where pub­lish­ers are li­able for teasers that are un­der­stand­able on their own, even if read­ers never read the full ar­ti­cle. Google’s own ar­gu­ment would also significantly di­min­ish” the ben­e­fit of the fea­ture, the court noted, if the overview were generally rec­og­nized as un­re­li­able.”

The court also pointed to a pro­tec­tion gap. If Google were only li­able for ob­vi­ous vi­o­la­tions, vic­tims would have no real le­gal re­course when the AI makes false claims. The third par­ties whose web­sites served as sources had­n’t even made the state­ments in ques­tion. So vic­tims could­n’t sue the sources, and un­der ex­ist­ing rules they could­n’t ef­fec­tively sue Google ei­ther.

As a re­sult, Google could­n’t in­voke host provider pro­tec­tions un­der the Digital Services Act or fall back on the stan­dard no­tice-and-take-down process for search en­gines.

AI-generated opin­ions get less free speech pro­tec­tion

As if the rest was­n’t bad enough for Google, the court also went af­ter free speech pro­tec­tion for AI-generated con­tent. An AIs opin­ion is not the ex­pres­sion of an ac­quired con­vic­tion of the per­sons ex­press­ing it, but the re­sult of an al­go­rithm,” the court wrote.

Offering AI-powered re­search is above all an ex­pres­sion of Google’s busi­ness ac­tiv­i­ties” and at most a sec­ondary ex­pres­sion of an in­ter­est in be­ing able to freely ex­press one’s opin­ion and be­liefs.”

When weigh­ing the plain­tiffs’ pri­vacy rights against Google’s in­ter­ests, Google had to take a back seat, es­pe­cially since the chal­lenged state­ments were based on un­true facts. The AI had linked the plain­tiffs to com­pa­nies that, ac­cord­ing to sworn af­fi­davits, had no con­nec­tion to them what­so­ever.

Google picks up 80 per­cent of the le­gal tab

The court ruled in fa­vor of the plain­tiffs on most counts. It banned claims about scams, con­nec­tions to du­bi­ous com­pa­nies, sub­scrip­tion traps, phone calls that never hap­pened, and lack of avail­abil­ity. Only two mi­nor re­quests got de­nied.

The risk of re­peated vi­o­la­tions re­mained, even though the spe­cific texts were no longer be­ing dis­played. Google had­n’t is­sued a cease-and-de­sist de­c­la­ra­tion with a penalty clause, and noth­ing stopped the al­go­rithms from gen­er­at­ing the same state­ments again. Google cov­ers 80 per­cent of the le­gal costs; the plain­tiffs pay 10 per­cent each.

The rul­ing may also have in­ter­na­tional reach, ac­cord­ing to the court.

Even a 91 per­cent ac­cu­racy rate means mil­lions of wrong an­swers

The Munich rul­ing goes far be­yond this one case. An analysis by AI startup Oumi for the New York Times found that Google’s AI Overviews with the cur­rent Gemini 3 model an­swered cor­rectly 91 per­cent of the time.

That’s solid enough for every­day use by most peo­ple. But at Google’s scale, it still means mil­lions of wrong an­swers every hour. If enough of that wrong con­tent de­fames com­pa­nies or in­di­vid­u­als, it could be­come a se­ri­ous le­gal prob­lem not just for Google but for other providers of sim­i­lar ser­vices like ChatGPT, Claude, or Perplexity.

The Oumi analy­sis also found that 56 per­cent of the cor­rect Gemini 3 an­swers could­n’t be backed up by the sources Google linked. The AI is giv­ing an­swers whose ori­gins users can’t trace.

The Munich court tack­led ex­actly this prob­lem: the AI makes its own claims that don’t ap­pear in any linked source, and the op­er­a­tor has to an­swer for them. Whether this rea­son­ing holds up on ap­peal re­mains to be seen, and Google has­n’t com­mented on the rul­ing. But if it gains trac­tion in­ter­na­tion­ally, the fall­out could hit not just Google but every AI provider whose sys­tems para­phrase con­tent from the web.

FCC Wants to Kill Burner Phones By Forcing Telecoms to Get All Customers’ IDs

www.404media.co

The Federal Communications Commission (FCC) wants to make it ef­fec­tively im­pos­si­ble for peo­ple to buy what many call burner phones—a phone not ex­plic­itly linked to your iden­tity at the point of pur­chase—which would im­pact pri­vacy-con­scious peo­ple, to do­mes­tic abuse sur­vivors, to jour­nal­ists, and many more. The FCC plans to do this by legally forc­ing the coun­try’s tele­coms to store a wealth of per­sonal in­for­ma­tion about es­sen­tially all phone cus­tomers, in­clud­ing a gov­ern­ment is­sued iden­ti­fi­ca­tion num­ber and their phys­i­cal ad­dress, alarm­ing pri­vacy ad­vo­cates and civil rights ac­tivists who com­pare the mea­sures to those from au­thor­i­tar­ian coun­tries where it can be dif­fi­cult to buy a mo­bile phone plan with­out giv­ing up your iden­tity.

The pro­posed change would dras­ti­cally shake up how peo­ple ob­tain phone plans in the U.S., and have all sorts of pri­vacy and cy­ber­se­cu­rity knock-on ef­fects. The FCC is propos­ing the data col­lec­tion partly as a way to com­bat scam­mers, with tele­coms be­ing re­quired to col­lect other in­for­ma­tion on busi­ness and for­eign cus­tomers like the in­tended use case of their bulk phone plan pur­chase and their IP ad­dress. But the changes would mean tele­coms col­lect data on all new and re­new­ing cus­tomers, and the FCC pro­vides a long list of other things that the col­lected data could help au­thor­i­ties with.

💡

Do you know any­thing else about this pro­posed change? I would love to hear from you. Using a non-work de­vice, you can mes­sage me se­curely on Signal at joseph.404 or send me an email at joseph@404­me­dia.co.

For decades, civil lib­er­tar­i­ans have looked over­seas at au­thor­i­tar­ian coun­tries where the gov­ern­ment re­quires peo­ple to reg­is­ter to get a mo­bile phone to en­sure they can be tracked. We never thought that would hap­pen here,” Jay Stanley, se­nior pol­icy an­a­lyst at the American Civil Liberties Union’s (ACLU) Speech, Privacy, and Technology Project told 404 Media in an email. But make no mis­take: with this rule­mak­ing, the gov­ern­ment is con­tem­plat­ing tak­ing away peo­ple’s abil­ity to get a burner phone, which will hurt low-in­come peo­ple, do­mes­tic vi­o­lence vic­tims, and any­one else who cares about their pri­vacy.”

This post is for paid mem­bers only

Become a paid mem­ber for un­lim­ited ad-free ac­cess to ar­ti­cles, bonus pod­cast con­tent, and more.

Subscribe

Sign up for free ac­cess to this post

Free mem­bers get ac­cess to posts like this one along with an email round-up of our week’s sto­ries.

Subscribe

Already have an ac­count? Sign in

Cleaning up after AI rockstar developers - Jesse Skinner

www.codingwithjesse.com

Photo by Martijn Baudoin on Unsplash

We’ve all worked with a rock­star de­vel­oper. They joined the team years ago, full of en­ergy. They had great ideas about new tech, new par­a­digms, new ar­chi­tec­tures. Their cut­ting-edge ideas left every­one else feel­ing a bit be­hind and out­dated.

They rewrote most of the com­pa­ny’s core ar­chi­tec­ture. They in­tro­duced new build processes, new tools, new lan­guages. They re­jected most pull re­quests, rais­ing the bar on what was ex­pected of every­one else. Nobody un­der­stood the code they wrote but no­body would ad­mit it.

All the hard­est tasks were as­signed to the rock­star. They’d have it done faster than any­one else. The en­gi­neer­ing al­ways sounded very im­pres­sive, even if the rock­star was the only one who knew how it fit to­gether.

Everyone else was mov­ing a lot slower in com­par­i­son. Everyone was strug­gling to keep up, to learn the new li­braries, and to do things the rock­star way.

A few years af­ter they joined the team, sud­denly they were gone. They had got­ten bored, and wanted a bet­ter job work­ing on a more chal­leng­ing pro­ject at a big­ger com­pany.

Dealing with the af­ter­math

Suddenly, you were asked to take over the rock­star’s pro­jects. You dug into the code, and you found your­self buried alive. The flow of data was so hard to fol­low, it seemed like some­one was try­ing to cover up a mur­der.

You started with try­ing to fix a sim­ple bug. Just get­ting the code to run on your lap­top took a week.

Half the code was writ­ten in a lan­guage you did­n’t un­der­stand. The other half was writ­ten us­ing li­braries you never heard of.

You tried to tell your boss that you think the code needs a rewrite. They did­n’t be­lieve you, be­cause it was writ­ten by the rock­star him­self. As you waded through the slop, you browsed job post­ings and fan­ta­sized about leav­ing.

Cleaning up af­ter a rock­star

I’ve worked with many teams and agen­cies who needed me to clean up af­ter these rock­stars. I ac­tu­ally love the chal­lenge of try­ing to un­der­stand and res­cue a messy code­base. It’s like sit­ting down with a box of tan­gled string lights, and pulling it apart un­til they’re us­able again.

As I’ve gone through the process, I’ve seen some pat­terns. These rock­stars ab­solutely love cod­ing, learn­ing, and us­ing new par­a­digms, and it shows. They’re al­ways push­ing them­selves to the edge of their abil­i­ties, writ­ing the most clever code they can. They are fo­cused on mov­ing as fast as they can.

Unfortunately, the last thing these rock­stars care about is writ­ing code that oth­ers can work with.

Along comes ar­ti­fi­cial in­tel­li­gence

In the past years, most teams have been over­whelmed by an army of rock­stars. Every time some­one starts a new chat, there’s the risk of adding a rock­star to the team.

The agent does­n’t re­mem­ber any­thing it did yes­ter­day. It hap­pily gen­er­ates tens of thou­sands of lines of code in min­utes. It works to com­plete tasks as fast as un­hu­manly pos­si­ble. It does­n’t care whether this code will fit with all the other code in the sys­tem. It also does­n’t care whether the sys­tem is be­com­ing more un­der­stand­able, or worse.

The AI has a tool­box of best prac­tices that prob­a­bly don’t ap­ply here. It in­sists on the belt and sus­penders” way of do­ing things, even when the com­plex­ity out­weighs the ben­e­fit. When asked to re­view your code, it comes up with a long list of im­prove­ments, many of which you dis­agree with. The bar has been raised for every­one, and many feel they need to use LLMs or else they’ll fall be­hind for­ever. (Though I be­lieve it’ll be those who let LLMs write all their code who will ul­ti­mately be left be­hind.)

With so much gen­er­ated code, the com­plex­ity of a sys­tem can grow ex­po­nen­tially. It can be so com­plex that the only way to make sense of it is to use an LLM. Developers, teams, whole com­pa­nies can be­come ad­dicted and de­pen­dent on gen­er­a­tive AI.

Cleaning up af­ter hun­dreds of AI rock­stars

Sitting down with a pile of slop is­n’t as fun as clean­ing up af­ter a rock­star. At least the rock­star had some kind of de­sign in mind, and was try­ing to do their best.

A vibe coded pile of slop was­n’t writ­ten by a sin­gle ar­ti­fi­cial de­vel­oper. It was gen­er­ated across many dif­fer­ent chats, and many dif­fer­ent con­texts. It’s like a code­base writ­ten by hun­dreds of dif­fer­ent rock­stars, one fea­ture or bug­fix at a time.

Sometimes there’s so much tech­ni­cal debt that it can never be paid off.

Building soft­ware that lasts

There are many ways to use an LLM that don’t al­low it to act like a rock­star. You can lead the en­gi­neer­ing, and guide the LLM to gen­er­ate small snip­pets at a time. You can en­sure that the soft­ware is writ­ten in a way that every­one on your team will be able to un­der­stand and work with it eas­ily.

If you find your­self lost, un­able to un­der­stand what the LLM is do­ing or why, tap the brakes. It’s okay to move slower, to en­sure the soft­ware you’re gen­er­at­ing is high qual­ity. It’s also okay to pre­vent over-en­gi­neer­ing, to sim­plify and sim­plify un­til the ar­chi­tec­ture matches the com­plex­ity of the prob­lem.

It’s also okay to leave your LLM in the tool­box some­times, and to write code your­self. Craftsmanship will al­ways be in our hands, it’s one thing we can never out­source to a ma­chine.

Published on June 8th, 2026. © Jesse Skinner

Albania Is Not for Sale: Kushner's $4 Billion Resort Triggers 'Flamingo Revolution', Asset Freeze and an EU Warning

www.yacnews.com

Albania’s Flamingo Revolution” is test­ing how far a gov­ern­ment will go to pro­tect a for­eign in­vestor’s in­ter­ests, and whether the EU will hold it ac­count­able.

Albanian anti-cor­rup­tion pros­e­cu­tors froze the bank ac­counts of Albania Land Development, the com­pany that bought beach­front plots for a lux­ury re­sort backed by Jared Kushner, as na­tional protests against the pro­ject en­tered their sev­enth con­sec­u­tive day. The pre­ven­tive seizure was or­dered by SPAK, the Special Prosecution Against Corruption and Organised Crime, as part of a prop­erty-fraud in­ves­ti­ga­tion into how land ti­tles in a pro­tected coastal wet­land were ac­quired and how the area was stripped of its pro­tected sta­tus. Albania Land Development is owned by the Syrian, na­tion­al­ized Qatari broth­ers Moutaz and Ramez Al-Khayyat, who re­cently bought the plots in Zvernec, near the south­ern city of Vlora. One source put the frozen sum at about $195 mil­lion trans­ferred for the land, a fig­ure SPAK has not con­firmed.

SPAK con­firmed on 2 June that it had opened a case into the changes made in 2024 to the pro­tected sta­tus of the Vjosa-Narta area and into how own­er­ship of the land was ob­tained. Prosecutors said they would also ex­am­ine how of­fi­cials by­passed the nor­mal pub­lic-ten­der sys­tem and the ori­gin of the funds used to buy the land ti­tles, in an area where own­er­ship has been dis­puted since the col­lapse of com­mu­nism in the 1990s. In 2024, the Albanian Parliament passed spe­cial leg­is­la­tion re­clas­si­fy­ing Sazan and the Pishe Poro-Narta area to per­mit large-scale de­vel­op­ment, the move that made the strate­gic in­vestor des­ig­na­tion pos­si­ble; op­po­si­tion par­ties and en­vi­ron­men­tal groups ar­gued the changes were writ­ten to ac­com­mo­date Kushner-linked in­vestors. One ad­min­is­tra­tor of Albania Land Development, Redi Struga, has re­port­edly been sub­ject to searches.

Rama has tried to oc­cupy both sides of the SPAK ac­tion, back­ing the in­ves­ti­ga­tion into the sus­pi­cious lo­cal sell­ers while de­fend­ing the for­eign in­vestors as le­git­i­mate. He con­demned the guards’ con­duct as disgusting” and told par­lia­ment he wanted to make Albania a des­ti­na­tion to be en­vied in the re­gion,” in­sist­ing the fi­nal pro­posal had not been sub­mit­ted, the en­vi­ron­men­tal study was in­com­plete, and the la­goon it­self would not be touched. He said five in­ter­na­tional ar­chi­tec­ture firms were re­design­ing the mas­ter­plan.

The in­vestors are within their rights. Blocking the trans­ac­tion is ar­bi­trary and neg­a­tive,” Rama told re­porters.

He has re­fused to halt the wider plan. In an in­ter­view with Politico at the EU-Western Balkans sum­mit in Tivat, Montenegro, he said the protests would never have gath­ered this much at­ten­tion on their own.

If it was not Jared, they would not give a shit about what is hap­pen­ing in Albania,” Rama said.

Rama, a long-time friend of the Trump and Kushner fam­i­lies, claimed the anti-cor­rup­tion and land de­fence cam­paign was be­ing pushed by op­po­nents of Donald Trump.

The protests, which civil so­ci­ety and in­ter­na­tional me­dia have called the Flamingo Revolution, have grown well past their en­vi­ron­men­tal start­ing point into a chal­lenge to Rama him­self, and the as­set freeze is only the most vis­i­ble of sev­eral le­gal and diplo­matic pres­sures now bear­ing on his gov­ern­ment.

Two pro­jects, one coast­line

The de­vel­op­ment is two ven­tures pre­sented as one am­bi­tion. Off the bay of Vlora sits Sazan, Albania’s largest is­land at about 5.7 square kilo­me­tres, a for­mer Italian and then com­mu­nist-era mil­i­tary base kept off-lim­its for decades and cov­ered in Cold War bunkers and tun­nels. On 30 December 2024, a Strategic Investment Committee chaired by Rama granted strate­gic in­vestor sta­tus to Atlantic Incubation Partners, a firm af­fil­i­ated with Kushner’s Affinity Partners, for an Aman-branded eco-re­sort on the is­land, a pro­ject val­ued at about 1.4 bil­lion eu­ros and pro­jected to em­ploy roughly 1,000 peo­ple. Reuters, which saw the writ­ten de­ci­sion, re­ported that the state would take part through a joint le­gal en­tity in­volv­ing the state-run Albanian Investment Corporation. The terms in­clude no tax dur­ing the con­struc­tion phase while the Albanian state un­der­writes the wa­ter, elec­tric­ity and sewage in­fra­struc­ture.

The sec­ond and larger ven­ture sits on the main­land, on the Vjosa-Narta coast near Zvernec, where Albania Land Development as­sem­bled the beach­front plots now un­der in­ves­ti­ga­tion. Conservationists de­scribe the wider zone, the Pishe Poro-Narta pro­tected land­scape, as one of the Mediterranean’s last largely in­tact coastal wet­lands, home to flamin­gos, more than 200 mi­gra­tory bird species, Mediterranean monk seals and nest­ing log­ger­head sea tur­tles.

The es­ti­mate for the pro­ject shifts de­pend­ing on who is speak­ing. The Sazan com­po­nent is con­sis­tently put at about 1.4 bil­lion eu­ros. Rama has re­ferred to a four-bil­lion-euro pro­ject once the Vlora main­land is in­cluded, and has said the two to­gether could be worth up to five bil­lion eu­ros. Most cov­er­age ren­ders the ag­gre­gate as roughly $4 bil­lion.

Land de­fend­ers and the ecol­o­gist Joni Vorpsi of PPNEA-BirdLife Albania de­scribe a pro­ject con­sist­ing of around 10,000 ho­tel rooms and vil­las spread across the is­land and the coast, a scale Vorpsi said would completely de­stroy that wild re­gion.”

The money be­hind Affinity Partners

Affinity Partners is not US money in any or­di­nary sense. Kushner set up the firm in 2021, days af­ter leav­ing the White House, with no prior pri­vate eq­uity ex­pe­ri­ence, and it is funded largely by Gulf sov­er­eign wealth. The largest sin­gle backer is Saudi Arabia’s Public Investment Fund, which com­mit­ted $2 bil­lion in 2021 over the writ­ten ob­jec­tions of its own screen­ing panel. That panel flagged the fir­m’s in­ex­pe­ri­ence, an as­set man­age­ment fee it judged ex­ces­sive, the king­dom bear­ing most of the risk, and public re­la­tions risks” tied to Kushner’s role as a se­nior ad­viser to Trump, and called the fir­m’s op­er­a­tions un­sat­is­fac­tory; the fund’s board, chaired by Crown Prince Mohammed bin Salman, over­ruled the panel and ap­proved the deal.

Qatari and Emirati money sits along­side the Saudi stake, and re­port­ing has put the fir­m’s to­tal for­eign-gov­ern­ment back­ing at around $4.6 bil­lion. That fund­ing base is why op­po­nents read the Albania deal as more than tourism. Kushner has served as an in­for­mal ad­viser to Trump dur­ing the sec­ond term, with a cen­tral part in ne­go­ti­a­tions on both the Russia-Ukraine and Iran wars, and crit­ics ac­cuse Albania of grant­ing him favourable terms to court the White House, a charge Rama de­nies. The pro­jec­t’s de­vel­op­ers say it will cre­ate jobs, at­tract in­vest­ment and raise Albania’s pro­file as a des­ti­na­tion, and that the mas­ter­plan is be­ing re­designed to pro­tect the en­vi­ron­ment.

Ivanka Trump’s is­land

Kushner an­nounced his Balkans plans in 2024. He and Ivanka Trump vis­ited the Vlora re­gion in early 2026, ac­com­pa­nied by ar­chi­tects and in­vestors, and Ivanka met with Rama. What pushed the pro­ject into Albanian head­lines was an in­ter­view Ivanka gave to the US pod­caster David Senra, pub­lished in late May.

0:00

/2:07

Youtube | video credit: @DavidSenra

She called it an in­cred­i­ble pro­ject with my hus­band in the Mediterranean” and de­scribed Sazan as an unbelievable, beau­ti­ful 1,400-hectare pri­vate is­land.”

Ivanka re­counted find­ing it by chance from a friend’s boat We were on a friend’s boat, and we stopped for a swim,” af­ter which the cou­ple swam ashore and hiked bare­foot to the top.

She cast the build as care­ful stew­ard­ship, say­ing they had developed the op­por­tu­nity to help re­al­ize its po­ten­tial and trans­form it.”

To Albanians, hear­ing a for­mer mil­i­tary zone the state had held for decades de­scribed as a pri­vate is­land the cou­ple had dis­cov­ered landed as an era­sure of their own coast, and lo­cals be­gan call­ing the place Ishulli i Trumpeve, Trump Island.

Clearing be­fore the per­mits

The clear­ing be­gan be­fore any of that was set­tled. Excavators and dump trucks moved onto the main­land site at Zvernec in late April, cut­ting ac­cess roads, lay­ing gravel over beaches and dunes, felling pine and clear­ing coastal for­est, with no com­pleted en­vi­ron­men­tal im­pact as­sess­ment and no pub­lic con­sul­ta­tion. BirdLife International, which doc­u­mented the work, re­ported that con­struc­tion had sealed one of the two chan­nels link­ing the Narta Lagoon to the sea, cut­ting the tidal ex­change that the la­goon’s fish and birds de­pend on, and ac­cused the gov­ern­ment of mis­lead­ing par­lia­ment about what was un­der­way.

PPNEA says some of the dam­age to the dunes can no longer be un­done, and a lo­cal of­fi­cer for the group mapped the de­struc­tion of at least one sea tur­tle nest be­neath the bull­doz­ers. The group’s ex­ec­u­tive di­rec­tor, Aleksandr Trajce, said the pub­lic had no warn­ing and watched the ma­chin­ery ar­rive with no no­tice; the gov­ern­ment later as­serted that a de­vel­op­ment per­mit ex­isted but has not pro­duced it, and Trajce de­scribed the process as show­ing a to­tal lack of trans­parency.” Rama has since told par­lia­ment that the fi­nal pro­posal has not even been sub­mit­ted and the en­vi­ron­men­tal study is not fin­ished, which places the clear­ing ahead of the process meant to ap­prove or refuse it.

How the protests grew

Kushner an­nounced his Balkans plans in 2024, when he and Ivanka Trump vis­ited the Vlora re­gion in early 2026, ac­com­pa­nied by ar­chi­tects and in­vestors, and Ivanka met Rama. On the David Senra pod­cast last month, Ivanka de­scribed Sazan as a pri­vate is­land they had dis­cov­ered while swim­ming from a friend’s boat, a fram­ing of long-held pub­lic land that drew par­tic­u­lar anger once it reached Albanian au­di­ences.

Excavators and other heavy ma­chin­ery be­gan clear­ing the main­land site in late April, open­ing ac­cess roads, dig­ging into sand dunes and felling pine, with­out per­mits and with no en­vi­ron­men­tal im­pact as­sess­ment. Protests gath­ered at the end of May af­ter de­vel­op­ers ringed the site with barbed-wire fenc­ing and blocked pub­lic ac­cess to the beach. On 30 May, footage cir­cu­lated of pri­vate se­cu­rity guards punch­ing and drag­ging a pro­tester along the ground at the fenced-off site while oth­ers were threat­ened for try­ing to pull down the fences.

0:00

/0:42

Protestor video | X

Authorities re­voked the li­cences of two pri­vate se­cu­rity firms, ar­rested one guard, Gerald Biba, a 32-year-old em­ployee of the firm Major Security, charged with un­law­ful de­pri­va­tion of lib­erty and in­ten­tional mi­nor in­jury, sus­pended sev­eral po­lice of­fi­cers, and re­moved the lo­cal po­lice chief. About 15 pro­test­ers were also charged, and the State Police opened an in­ter­nal in­ves­ti­ga­tion into the com­mand struc­ture of the Vlora Regional Police Directorate. The fence has since been taken down.

Anger then spread to Tirana, where thou­sands ral­lied out­side Rama’s of­fice for con­sec­u­tive evenings un­der the ban­ner Albania is not for sale,” chant­ing cancel the pro­ject” and hold­ing signs read­ing Ivanka, go home” and de­mand­ing the prime min­is­ter’s res­ig­na­tion. Albanian di­as­pora com­mu­ni­ties in New York, Athens, Milan and Brussels held their own demon­stra­tions, some car­ry­ing card­board flamin­gos.

Rama in­vited the pro­test­ers to send a del­e­ga­tion of about 20 peo­ple to dis­cuss so­lu­tions; they re­fused. The un­rest also opened a rift with Greece. After a Greek cit­i­zen was in­jured in the clashes, the Greek Foreign Ministry raised the treat­ment of pro­test­ers and the prop­erty rights of Albania’s eth­nic Greek mi­nor­ity with Tirana, and tied those con­cerns to Albania’s oblig­a­tions as an EU can­di­date.

Brussels and the ac­ces­sion ques­tion

The European Commission has put the pro­ject at the cen­tre of Albania’s mem­ber­ship prospects. A Commission spokesper­son told Politico that Albania should re­frain from ac­tions that could un­der­mine the clos­ing bench­marks for Chapter 27, the en­vi­ron­ment and cli­mate chap­ter of the ac­ces­sion talks, and that it ex­pected the au­thor­i­ties to act with­out de­lay. To close that chap­ter, Albania is ex­pected to align fully with EU law, in­clud­ing the Birds and Habitats Directives, re­peal the 2024 amend­ments to its Protected Areas law, and ter­mi­nate the 2015 Strategic Investments law that gives favoured pro­jects their fast track. Albania, a can­di­date since 2014 and in for­mal ne­go­ti­a­tions since 2022, is tar­get­ing mem­ber­ship by 2030 with tech­ni­cal ne­go­ti­a­tions to close by late 2027, a timetable Rama cam­paigned on and won a fourth term promis­ing. European Council President Antonio Costa, on a visit to Tirana, stated that ac­ces­sion re­quires Albania to fully im­ple­ment en­vi­ron­men­tal and rule-of-law stan­dards, be­yond merely adopt­ing European leg­is­la­tion on pa­per.

Albanian courts are still con­sol­i­dat­ing the in­de­pen­dence won in the 2016 jus­tice re­forms, and SPAK is the in­sti­tu­tion that re­form was meant to build. Whether the freeze holds or qui­etly lapses, whether the 2024 re­clas­si­fi­ca­tion is un­wound or left to stand, and whether the en­vi­ron­men­tal study that has not yet been writ­ten ever says no to a pro­ject al­ready un­der con­struc­tion, will mea­sure whether ac­count­abil­ity in Albania is struc­tural or ar­rives only when a Trump name is at­tached.

reuters.com

www.reuters.com

Please en­able JS and dis­able any ad blocker

To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".

10HN is also available as an iOS App

If you visit 10HN only rarely, check out the the best articles from the past week.

Visit pancik.com for more.