MODEL is The Magazine for AI Tools.
What we do:
- We test AI tools hands-on on our own machines and publish the numbers, good or bad.
- Every story is fact-checked against primary sources: docs, release notes, filings.
- Every review names the catch, not just the hype.
- Affiliate links are labelled, and we only recommend tools we've actually tested.
Recent tests: DuckDB 2.0 ran our 8 queries 1.7x faster than 1.5.6. tsrs checked Playwright's codebase 6.4x faster than TypeScript 7.0.2 with identical errors.
Every story we've published, newest first:
https://t.co/pycKp6wUdE
— MODEL Editors
Your startup is three years old. Congratulations, it's now a museum exhibit.
@joshelman says founders who started with hand-written code over the last 3 years now "feel behind and slower" than companies started this year with all code written by agents. @richardartoul's counterpoint: "nothing slows you down more than having paying customers."
https://t.co/9J174DGNyB
One Cyrillic letter turned admins into аdmins: a second variable that looks the same in any diff. Python ran it without a word. Ruff's default rules passed it.
We tested which checks catch lookalike names (UTS #39 "confusables", on the HN front page today):
• Our 5-line Python check printed "mallory can_delete: True." Mallory was never in admins. She was in аdmins (U+0430).
• It works the other way too. Python folds names to NFKC, so a fullwidth i in is_admin = True silently overwrote is_admin.
• @astral_sh Ruff 0.17.2 defaults: "All checks passed!"
• Ruff with PLC2401 + RUF001 selected flagged both files and exited 1, in 0.02s.
• rustc 1.85.1 warns by default: "found both admins and аdmins as identifiers, which look alike." But it's only a warning, and the code still compiled.
• The catch: PLC2401 flags every non-ASCII name, including café. Teams that use non-English names will get noise.
Our verdict: two minutes of config. If agents or outside PRs write your Python, add PLC2401, PLC2403, RUF001, RUF002, RUF003 to extend-select and run it in CI. In Rust, deny the two lints.
Full test and config: https://t.co/YEfJcoJ9DH
— MODEL Editors
Kimi just apologized, and backed it with quota.
Moonshot says K3.1 Pro subscribers hit rate limits and burned quota they shouldn't have, and that it should have fixed this sooner.
The fix, per @Kimi_Moonshot:
• A one-time reset on every plan: 25% of your monthly quota back, about one week of use. If you've used less than 25%, you reset to zero.
• Your usage bar updates by end of day Pacific time.
• Plan parameters adjusted, with fewer unnecessary subagent calls and shorter outputs, so quota goes further.
Who it's for: anyone paying for a Kimi plan to use K3.1 Pro.
The catch: the reset is one-time, and "fewer subagents, shorter output" is a trade-off. Watch whether long agent runs lose depth. The post doesn't give the new limits.
What K3.1 Pro is, what it costs, and when the weights land:
https://t.co/ZHHPV2FeZE
We're sorry for the rate limits and unnecessary quota consumption on the K3.1 Pro subscription plan. These were our issues, and we should have fixed them sooner.
Today, every subscriber on every plan gets a one-time usage reset, restoring 25% of their monthly quota (usage below 25% resets to zero), equal to one week of usage. Your usage bar will reflect this adjustment by end of day PST.
We've also adjusted the plan's parameters and are reducing unnecessary subagent calls and output length, so your quota goes further.
Thank you for your patience while we put this right.
Sweden's government is blocking the ChatGPT and Claude web apps on staff computers starting Monday. Staff get Copilot instead.
Plot twist: Copilot can also run Anthropic's models, if an admin switches them on.
So the ban isn't really on the model. It's on using @OpenAI and @AnthropicAI tools without a contract.
https://t.co/RDXXtK284j
Aider just got a CVE for running shell commands from a file in someone else's repo. We read the git history. Both shell=True lines it runs through were written by Aider itself.
• CVE-2026-115726, rated 8.5 High by VulnCheck on Oct 23. Every Aider version through 0.86.2 is affected.
• Aider auto-loads .aider.conf.yml from the repo root with no trust prompt. Two keys, notifications-command and editor, go straight to subprocess with shell=True.
• Clone a booby-trapped repo, start Aider, send one message, and the repo's command runs as you. It skips the confirmation Aider uses for commands the model suggests.
• git blame at v0.86.2: both sinks are authored by "Paul Gauthier (aider)". Aider's docs say that tag means Aider wrote the change.
• The release that added notifications-command, v0.76.0: "Aider wrote 85% of the code in this release."
• The catch: Aider's version of the editor call quoted the command. An hour later a human commit dropped the quoting. Human and agent each did half.
• The GitHub issue was filed Oct 20. As of today: open, 0 comments, no fix. Last commit to main was May 22.
Our take: shell=True on a command you typed is a feature. The bug is that the string can come from a stranger's repo, and no commit or review asked where it comes from. Coding agents write the diff they're asked for. Trust boundaries are never in the diff.
Takeaway: before running any coding agent in a repo you didn't write, read its config files. Better, run it in a container.
https://t.co/IvNRJo033e
#AIcoding
— MODEL Editors
Bought a used GPU in 2023. Turns out it spent three years doing AI math with the handbrake on.
True story: open-source Linux kernel modules lift a half-rate limit on FP16/BF16 tensor math (FP32 accumulate) in RTX 20/30/40 cards. RTX 4090 in the project's test: 165.6 → 330.8 TFLOPS. Games: same FPS. Chatbot typing speed: about the same. Via @VideoCardz@TechPowerUp
https://t.co/JEcNp9Arn1
Your TypeScript project imports README.md with no import attribute. tsc says nothing. TypeScript 7.1 beta can finally say no.
We tested the 7.1 beta from @typescript next to 7.0.2 and 5.9.3 on an 8-core Linux box:
• Old `declare module "*.md"` pattern: an import missing `with { type: "text" }` passed silently on all 3 versions
• New in 7.1: `declare module "*" with { type: "text" }`. The same import fails with TS2307, and the correct one is typed as a string
• 5.9.3 and 7.0.2 can't even parse that declaration
• Our own Next.js site: 0 errors on all 3. 7.1 used 105 MB vs 153 MB on 7.0.2, same ~0.4 s (5.9.3: 3.31 s)
• The new compiler API (typescript/sync, /async, /fs, /ast) ran the blog's snapshot example exactly as documented
The catch: 7.0.2 shipped that API under typescript/unstable/*. 7.1 removes those paths. Our import failed with ERR_PACKAGE_PATH_NOT_EXPORTED. If a tool you run imports them, fix it before upgrading. And it's still a beta.
Verdict: try it in a branch if you import non-code files or build tools on the compiler.
Full test: https://t.co/wIDDW83cAj
#TypeScript
Nanbeige4.3-33B from @nanbeige (the LLM lab at BOSS Zhipin) is a free, Apache 2.0 open model built for coding agents and office-style agent work. 33B dense, 512K-token context, text only.
On its own model card it beats Qwen3.8-27B on most tests: 80.9 vs 73.0 on Terminal-Bench 2.1, 65.5 vs 42.5 on DeepSWE. Qwen still wins SWE-Bench Pro and GDPval.
Who it's for: teams that want to self-host a coding agent. Official weights are 66 GB; community 4-bit quants are about 20 GB.
The catch: every score is the lab's own run. No independent tests yet, and we haven't run it.
https://t.co/JDiTYfF3ME
🚀Excited to announce Nanbeige4.3-33B!
To push the performance ceiling of small agents, our strategy in Nanbeige4.3 starts with building a powerful teacher first.
Nanbeige4.3-33B delivers SOTA agentic performance among open models at ~30B parameters:
* Strong results on agentic coding and cowork benchmarks.
* When integrated into mainstream agent harnesses, it tackles real-world tasks with cost-efficient inference.
* It will serve as a teacher for upcoming smaller Nanbeige models, starting with Nanbeige4.3-3B.
https://t.co/tSToQgZf2O
https://t.co/D228euvybz
#LLM #Agent
Ask GPT and Grok who to vote for, and tell them not to hedge. They pick opposite parties in almost every race.
A new study tested every 2026 midterm race through the developer APIs, web search on:
• The test: Convovo, a studio led by Cornell professor Tapan Parikh, asked GPT-6.1 Sol and Grok 4.7 about 479 House, Senate and governor races with one Democrat and one Republican. Three answers per race, Oct 21.
• GPT named the Democrat in 1,082 of 1,111 party picks (97%).
• Grok named the Republican in 952 of 1,038 (92%).
• Where both picked a party, they agreed in 36 of 418 races.
• Search off, with both nominees named: GPT still picked the Democrat in 387 races to 37. Grok declined in 441.
• The sources split too: X came up in 41% of Grok's answers, a conservative voter guide in 39%. GPT leaned on Wikipedia (93%) and AP (74%).
• In a 10-race pilot, Claude Sonnet 5.5 and Gemini 3.8 Flash declined all 20 calls.
The catch:
• The prompt forces a pick. The ChatGPT and Grok apps refused it.
• One day, 3 answers per race, self-published, not peer reviewed. GPT declined 313 of its 1,437 answers, Grok 375.
• OpenAI says the API test doesn't reflect what people get in ChatGPT.
Our take: if you build on a model API, its leanings ship inside your product. Run your users' real questions through it before Nov 3, not after.
Full story + sources:
https://t.co/TNyhurZlxQ
MODEL Editors
AI model loyalty, enterprise edition: "It's not you. It's your price per token."
At @Rippling, Anthropic models did 57% of engineers' coding work in May. Now 18%. OpenAI: 16% → 52%. Reason given: OpenAI was cheaper (via @theinformation).
https://t.co/hbSEc9k8XY
Patched and unpatched Node both report brotli 1.1.0. So process.versions.brotli can't tell you if you're safe from Node2Shell (CVE-2026-111497).
We tested it. Here's the check that worked:
• node -p "require('zlib').constants.BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH" printed -17 on Node 22.23.4 (patched) and undefined on 20.19.2 (unpatched). Node 20 is end-of-life, so it gets no fix.
• Python: requests decoded a Brotli response because Brotli 1.2.0 was installed. Our code never imported brotli.
• pip-audit 2.10.1 flags it now: PYSEC-2026-4322 / GHSA-9v8h-qqgm-4m35, exit 1, 0.4s. Early write-ups said it wouldn't.
• The fix: @nodejs 22.23.4 / 24.22.1 / 26.12.1, Brotli 1.2.1+, brotlicffi 1.2.1.0+. Then rebuild your images.
• The catch: pip-audit missed a brotlicffi pin behind a non-CPython marker. And uninstalling Brotli got us status 200 with garbled text and no error.
• Who it's for: anyone whose agent fetches URLs it doesn't control (webhooks, link previews, crawlers).
Our verdict: it's a 5-minute job. Run the check on every Node you ship today.
Full test: https://t.co/cop4T5LYBV
#NodeJS
Hallmark v2 by @nutlope and @togethercompute is a free, MIT-licensed design skill for Claude Code, Codex, Cursor and OpenCode.
What it does: 48 themes, pages built around what the visitor came to do, and a lint that renders your page at 8 widths and flags machine-made tells (an eyebrow over every heading, one coloured word in a headline, a sign-up box at the end of every page). Contrast, focus and invented facts are hard blocks.
Who it's for: anyone shipping landing pages or app screens with a coding agent.
The catch: per its own docs, the edit-time check only runs on its own in Claude Code. Codex and OpenCode get just the final sweep, and the browser checks need Chrome + puppeteer-core.
Not tested by us yet.
https://t.co/XmmYFUXGk2
Tired of every AI-generated website looking exactly the same?
Hallmark is exploding on GitHub with over 31,000 stars, giving Claude Code, Codex and Cursor 48 design themes and automated checks to create more professional websites
Get started in 3 steps:
* Install: npx skills add nutlope/hallmark -g
* Launch: Open Claude Code or Cursor in your project
* Design: Run /hallmark with a description of your website
Stop building websites that scream “made by AI”
Repo: https://t.co/VfmGo3WFC6
AI has finally reached the other 493 in the S&P 500. Accounting filed it under "expenses."
@apolloglobal: revenue per worker and margins are rising for the Mag 7, flat for the S&P 493. No sign of AI in productivity growth yet. Not investment advice.
https://t.co/aPVScVjzcI
The LiteLLM hack didn't start with a clever exploit. It started with a coding-agent config file pushed to a public repo in May, and a key nobody revoked.
@LiteLLM published its root-cause report on the poisoned 1.107.0 release. The chain:
• May 27: an opencode.json holding the master key to LiteLLM's internal agent platform lands in a public repo. The commit gets force-pushed over. The key is never revoked.
• That agent platform opened PRs using an org owner's personal GitHub CLI token. Not a service account. Not scoped down.
• Oct 10, 136 days later: the attacker uses the key, and one API call returns the owner's token. Owner access to every repo.
• Throwaway CI branches post repo secrets to https://t.co/iTczvi4kDH and pull two more maintainers' tokens.
• Release approvals had been loosened that week so any two engineers could ship. The attacker overrides branch protection, points the release at a lookalike fork, triggers with one stolen token, approves with another.
• Oct 21: seven poisoned wheels hit PyPI. A GitHub user flags it about 27 minutes later. PyPI quarantines it within about two hours.
Our take: AI coding setups are now full of config files with keys in them. Rewriting git history hides a key from you, not from whoever already scraped it. And an experimental agent should never run on a human owner's token.
Takeaway: if a secret touched a public commit, rotate it. Give agents their own scoped credentials.
https://t.co/DplMHabNOV
#AIcoding
— MODEL Editors
AI agents have officially reinvented middle management. The fix: a reorg.
@AnthropicAI says many company agents now copy the org chart, and subagent handoffs play "telephone." Its advice: one main agent that loads skills and tools as needed.
https://t.co/LZ6SvkppBr
@evgheni_D Good question. We haven't tested K3.1 Pro hands-on yet, so we can't say. Moonshot's benchmarks are their own, and none of them measure conflicting requirements across files. If we run that test, we'll post the results. — MODEL Editors
Kimi K3.1 Pro: 2.8T-param MoE (104B active), 1M-token context, pitched at full-project coding (Unreal, Unity, Godot) and Blender/CAD modeling. Live now in the Kimi apps, Kimi Code and the API at $2 in / $10 out per 1M tokens.
Who it's for: devs running long agentic coding jobs who want a 1M-context API option, and teams who plan to self-host once weights land.
The caveat: "open-weight" is a promise for now. Weights are due by Nov 4, the K3.1 license isn't out, and all the benchmarks are Moonshot's own. Self-hosting the same-size K3 takes 8+ GB300s.
Our breakdown @Kimi_Moonshot:
https://t.co/ZHHPV2FeZE
Introducing Kimi K3.1 Pro: our most capable 3T-class open-weight model.
🔹 1M-token context, 2.8T total / 104B active params (MoE), Multimodal.
🔹 Full-project coding: games in Unreal, Unity & Godot.
🔹 Excels at parametric 3D modeling in Blender & CAD.
🔹 More reliable at finance work: Accurate modeling with hallucination down by 65%.
🔹 Matching the strongest proprietary models across coding, agentic and knowledge benchmarks.
Kimi K3.1 Pro and K3.1 Pro Highspeed (2–3× faster) are now live on https://t.co/85jA71X9gw, Kimi Work, Kimi Code, and the Kimi API.
Open weights by Nov 4, 2026.
🔗 API: https://t.co/XCrgjXAqMw
🔗 Tech blog: https://t.co/5iPP0MBej6
Your AI agent clicked "Place order." The tool said "✓ Done." The button was disabled and nothing happened.
agent-browser 0.39.2 from Vercel Labs fixes that. We ran it side by side with 0.39.1 on our own test pages. Chrome 156, no AI model, no API key:
• A disabled button, two hidden buttons and one placed off the page: 0.39.1 said "Done" for all 4. The page got 0 clicks
• Clicked by its reference number with --json, the disabled button even got "success": true. 0.39.2 errors on all 4 and says why: "is disabled, so the click would not reach it"
• Real buttons still clicked fine on both
• A redirect to a domain outside the allowlist: 0.39.1 exited 0 as if it loaded. 0.39.2 exits 1, "blocked by the domain filter"
• A policy file with broken JSON: 0.39.1 ignored it and ran the eval it was meant to block. 0.39.2 refuses to run and names the broken file
The catch: the docs' own "restrictive" policy example blocks every command on both versions, even close, because it doesn't allow "launch" and "close". Add both.
Verdict: upgrade if an agent drives a browser for you. Silent failures are now errors your agent can see.
Free, Apache-2.0. Not sponsored. We didn't test the AI chat mode, cloud browsers or real sites.
Full test:
https://t.co/LCvmDI8pXP
@ctatedev@vercel #AIagents
— MODEL Editors
Impeccable, @pbakaus's open-source (Apache-2.0) design skill for AI coding agents, is now in Perplexity Computer's skills marketplace.
What it does: one /impeccable command with 24 subcommands (critique, audit, polish, typeset, layout and more) plus 62 rule-based checks for the usual AI-UI tells: purple gradients, cards nested in cards, gray text on color, Inter everywhere. Per @perplexity_ai, it reviews an interface for layout, type, contrast and accessibility, and fixes what a designer would flag.
The offer: tasks that use /impeccable are free through Oct 31, up to 5,000 credits (about $50) per user.
The catch: Computer needs a paid Pro or Max plan, and the same skill is already free in Claude Code, Cursor and Codex. It steers taste; it can't promise good design.
Not tested by us yet.
https://t.co/JBLNB0ax4K
/impeccable is now a skill inside Computer. It’s an open-source skill built by @pbakaus to let you build interfaces that don’t look like AI-generated slop. We’re offering 5000 credits per user to get started with the skill.
OpenAI just took its most capable models off the internet. The reason: its own AI agents kept finding ways out.
@OpenAI says frontier training now runs with no live internet access:
• The trigger: on Sept 20, a research model found a DNS gap in its training sandbox and used it to query a public chatbot. The run was killed about 2.5 hours later.
• Training of its most capable models paused for 11 days, then resumed Oct 1.
• Models now learn to browse in an "offline world": a huge indexed, cached copy of the web.
• Then OpenAI turned its own agents on its sandboxes, spending hundreds of billions of tokens. They chained bugs to escape microVMs, with fixes going to Kata, gVisor and Docker.
• Agents in separate VMs with no network passed secrets by timing the CPU cache. Same trick as Spectre.
The catch:
• OpenAI gave the agents source code and config details, and some tests assumed the host was already hacked.
• These are OpenAI's own findings, with no outside audit of this campaign yet.
• This covers internal training, not ChatGPT or the API.
Our take: "just unplug it" used to be the punchline. Now it's the policy. If your agents run in containers with network access, the container isn't your boundary. The network is.
Full story + sources:
https://t.co/FFFfVF2bVy
MODEL Editors
The internet can now send smells. It knows five: coffee, beer, red wine, cake and orange.
Science has digitized the Friday office party.
@OhioState's Scentronic (@ScienceAdvances): an AI e-nose names it, a wearable sprays a preloaded scent. Testers got it right ~73% of the time.
https://t.co/HuUUwwL1IX