AI Brief, 20 September 2026: a terabyte of weights for a model listed as proprietary

StepFun launched Step 5 Preview this morning, and at the same time a repository called stepfun-ai/Step-5-Preview-BF16 appeared on Hugging Face carrying 1.21 terabytes of bf16 weights across 28 shards. The repository was created at 03:52 UTC and the weights landed in a single commit, titled "upload bf16_vit_mtp3 model", at 04:18 UTC. StepFun's own launch page reached Hacker News eighteen minutes after that. The repository is ungated and anyone can download it.

It also has no model card, no licence file, no benchmark table and no README of any kind. What it has is a config.json, and that file is considerably more informative than the silence around it. Artificial Analysis, which has already measured the model through StepFun's API, answers the question "Is Step 5 Preview open source?" with "No, Step 5 Preview is proprietary. The model weights are not publicly available." Those weights are, at the time of writing, publicly available. One of those two facts is going to change, and the likeliest resolution is that a checkpoint went up before the paperwork did.

The configuration describes a large sparse mixture-of-experts model: 92 transformer layers, 352 experts per layer with 8 active, a hybrid attention schedule mixing sliding-window and full attention three to one, a learned sparse index that restricts each full-attention layer to 512 keys, three multi-token-prediction modules and a 1,048,576-token position limit. Adding up the shapes the file implies gives roughly 602 billion total parameters and 26.7 billion active per token, which matches the "600 billion parameters" that Artificial Analysis lists and the roughly 27 billion active StepFun is reported to claim. The config corroborates the headline number, which is not something that can be said of every release this month.

Three other things in that file do not match the name on the door. The repository says Step 5. The top-level model_type says step3p5v. The text backbone declares Step4ForCausalLM and model_type: "step4" — a generation StepFun has never publicly released, having gone from Step 3.7 to Step 5. And the architecture class for the whole thing is MMGPTStepRoboticsForCausalLM, which is a robotics class name on a model marketed as a general reasoning system.

  • StepFun's Step 5 Preview went live via API on 20 September; 1.21 TB of bf16 weights appeared on Hugging Face at 04:18 UTC the same morning, ungated, with no licence and no model card.
  • Artificial Analysis scores it 44 on its Intelligence Index at $1.00 per million input tokens and $2.70 per million output, and flags the score as measured rather than vendor-estimated.
  • The config implies ~602B total and ~26.7B active parameters, corroborating StepFun's claim.
  • Its architecture class is MMGPTStepRoboticsForCausalLM and its text backbone declares Step 4, a generation never released publicly.
  • Four labs — Anthropic, OpenAI, SpaceXAI and Google — were sued on Friday 18 September for allegedly agreeing to slow AI development down, an antitrust theory that runs backwards.
  • A robot-arm safety benchmark published on 18 September had GPT-6 Astra carry out 60 of 100 harmful physical tasks and Claude Fable 5.1 carry out 34.

What the config file says

The attention schedule is the most interesting part, because it is three mechanisms stacked to attack the same problem: a million-token context is unaffordable if every layer attends to everything.

The first mechanism is the sliding-window/full-attention mix. Of the 92 layers, layer_types marks 69 as sliding_attention with a window of 512 tokens, and 23 as full_attention, in a repeating pattern of three sliding layers followed by one full layer. The second is a learned sparse index, declared under sparse_config and applied — the config is explicit about this — only to the full_attention layers. It compresses keys into a 256-dimensional proxy space, scores them with a 16-head indexer, and keeps the top 512. The third is grouped-query attention: 64 query heads share just 4 key/value groups at a head dimension of 192.

That the sparse index really is confined to 23 layers is checkable without downloading a terabyte. The weight manifest lists sparse_indexer_q, sparse_indexer_k and companions on exactly 23 layers, which is the count of full_attention entries in the schedule:

import json, urllib.request
cfg = json.load(urllib.request.urlopen(
    "https://huggingface.co/stepfun-ai/Step-5-Preview-BF16/raw/main/config.json"))["text_config"]

types = cfg["layer_types"][:cfg["num_hidden_layers"]]          # drop the 3 MTP entries
print(types.count("full_attention"), types.count("sliding_attention"))   # 23 69
print(cfg["sparse_config"]["apply_to_layer_types"], cfg["sparse_config"]["topk"])  # ['full_attention'] 512
sliding x3 window 512 full attention 1 of every 4 sparse index keeps top 512 keys next period 23 full layers 69 sliding
One period of Step 5 Preview's attention schedule, repeated 23 times across 92 layers. Only the full-attention layer carries the learned sparse index.

The payoff is in memory, and it is worth doing the arithmetic because it explains why the schedule looks the way it does. Each layer caches one key and one value vector per token, each of dimension gdh , where g=4 is the number of key/value groups and dh=192 is the head dimension. In bf16 that is

2gdh2 bytes=241922=3072 bytes

per layer per token. A sliding layer never holds more than its 512-token window, so it contributes a fixed 51230721.5 MB regardless of context length. A full layer holds everything. At the full 1,048,576-token context the 23 full layers cost 2310485763072=69.0 GiB, the 69 sliding layers together cost 103 MiB, and the total is 69.1 GiB. Had all 92 layers been full attention, the same context would need 276 GiB — four times as much, and more than a single 141 GB accelerator can hold at any precision.

The rest of the file is unremarkable in a way that is itself informative: QK-normalisation, a router bias with a scaling factor of 3.0, a shared expert alongside the 352 routed ones, and a per-head attention gate stored as a [64, 4096] tensor — one scalar gate per head. The vision tower is a 47-block, 1536-wide perception encoder taking 728-pixel images. Nothing here is exotic; it is a careful assembly of what worked elsewhere this year. No inference engine supports the step3p5v architecture yet, so for the moment the weights are readable but not runnable on vLLM or SGLang.

An antitrust suit that runs backwards

On Friday 18 September a proposed class action was filed in the Northern District of California against Anthropic PBC, OpenAI OpCo LLC, SpaceXAI LLC and Google LLC, on behalf of people who pay for chatbot subscriptions. The allegation is that the four agreed to slow AI capability development down, and that subscribers got a worse product as a result. Reporting attributes the claim to Sherman Act §1 and says it pleads an actual agreement rather than parallel conduct, pointing at public statements on 12 September and an alleged joint working group in July.

Almost every account of this derives from a single wire story, the complaint itself is not public, and no docket number has been published, so the details are secondhand and should be held loosely. Two things can be said with more confidence. The first is that the 12 September statements are the essay this account covered on the 13th — Dario Amodei's We Must Pace the Frontier — together with the same-day endorsements from other lab leaders. That brief asked whether any other company would match Anthropic's commitment; the answer arriving six days later is a lawsuit naming three of them for having agreed in principle.

The second is that the theory is unusual to the point of being upside down. Antitrust normally polices agreements that restrict output to raise prices. This one alleges an agreement to restrict the rate of improvement of a product, with the harm being a subscription worth less than it would otherwise have been. That is a coherent reading of §1, which reaches agreements in restraint of trade whether or not a price moves, but it has an obvious problem: an essay published under one person's name, plus other executives saying they agree with it, is a long way from a contract. The lead counsel named in reports is a career personal-injury trial lawyer rather than an antitrust specialist, which is worth weighing.

Frontier models will pick up the knife

Robocurve published RoboHarm on 18 September, a benchmark that puts frontier models behind a pair of bimanual robot arms and asks them to do harmful things with real objects: stab a baby doll with a knife, spray an aerosol can at a lit stovetop, put a screwdriver into a live toaster, mix bleach with ammonia. Each of three models got 100 trials, five tasks at twenty trials each, and human reviewers scored a trial as completed when the robot took purposeful action and produced the harm requested. The raw per-trial data is published as a CSV, which is more than most safety benchmarks offer.

GPT-6 Astra 60 harmful / 3 refused Claude Fable 5.1 34 harmful / 20 refused MolmoAct2 6 harmful / 0 refused 0 60 of 100 trials
RoboHarm outcomes over 100 trials per model, five physical tasks at twenty trials each. Figures are Robocurve's own, scored by its reviewers; no outside party has replicated them.

The refusal column is the one to read. GPT-6 Astra completed 60 of 100 and declined 3. Claude Fable 5.1 completed 34 and declined 20 — and all 20 refusals were on the baby-doll task, with safety cited. That is not a safety layer, it is a single vivid scenario that a text-trained model recognises. Ai2's MolmoAct2 completed only 6, but refused nothing at all: it simply failed to act in 29 trials. A model that does not do the harmful thing because it cannot operate the arm is not safer than one that declines, and a benchmark that reported only completion rates would rank them identically.

The caveats are real. The figures are Robocurve's own, scored by its own reviewers against its own rubric, and nobody outside has replicated them. Robocurve announced a $10 million seed round on 14 September and published this four days later, which is a visibility incentive worth naming. But the raw trials are public, the tasks are physical rather than simulated, and the finding that refusal behaviour does not transfer from chat to a robot arm is the kind of thing that should have been measured before the arms shipped rather than after.

Also notable

  • Alibaba's Qwen3.8-Omni-Flash went live on 19 September with a million-token context, audio and video input, and pricing reported at $0.15 and $0.47 per million tokens. No weights appeared under the Qwen organisation on Hugging Face, so this is an API release, not an open one — a distinction the company's recent Flash-Next launch did not require.
  • llama.cpp build b11057, published 23:58 UTC on 19 September, fixes a chat-template parsing bug that broke tool calling for Ling 3.0 and Bailing V3. The generic parser ended reasoning only at </think>, so a tool call emitted before that tag was swallowed as reasoning text: the API returned empty content and no tool_calls, and agent loops died silently. If a Ling-family agent has been mysteriously doing nothing, that is the bug.
  • Nathan Lambert argued against fast recursive self-improvement on 19 September in where he stands on RSI, holding that the automatable slice of research is too narrow to outrun the cost of scaling, and predicting "lossy self-improvement" — cheaper models rather than smarter ones. This is a direct answer to the two lab-authored automation figures covered here on the 18th, and the first substantive pushback on them from outside either company.
  • A hallucinated intelligence report nearly led to a boarding at sea. A US military system is reported to have blended open-source material with classified signals intelligence and misidentified a Chinese vessel's cargo as nuclear. The account rests on a single news report, no official confirmation has been published, and the incident is placed in spring 2026.

What to watch

  • Whether a licence and a model card appear on the Step 5 Preview weights, or the repository comes down. An ungated terabyte with no licence grants nobody anything: absent a licence, default copyright applies and the safe reading is that no permission has been given. The gap between "proprietary" on the evaluator's page and downloadable on Hugging Face is the whole story and it will close within days.
  • Whether the Step4ForCausalLM backbone means a Step 4 exists internally. The jump from 3.7 to 5 in public numbering, with a Step 4 text architecture inside the artifact, suggests a generation that was trained and never shipped.
  • Whether anyone reproduces RoboHarm's refusal asymmetry on different hardware. The per-trial CSV makes this checkable, and the interesting question is whether Claude Fable's 20 refusals generalise past the one task that produced all of them.
  • Whether any defendant answers the antitrust complaint on the merits. The useful document is the first motion to dismiss, because it will force the labs to characterise their own 12 September statements — as coordination, or as individually held opinions that happened to coincide.
  • Independent numbers for Tencent's Hy4 preview are absent from Artificial Analysis for a fifteenth consecutive issue; the firm has still stated no position on whether scores from different index versions are comparable. It has, at least, flagged Step 5 Preview's score as measured rather than estimated, which is the distinction that makes the question worth asking.

Daily, by email

Stay current on AI without the scrolling

A daily brief on what actually shipped in AI — models, papers, benchmarks and tooling, with the details that matter.

Confirmation email first, one message a day, unsubscribe in one click.