IBM quietly shipped a reasoning model family that matters more than its release notes suggest. Granite 4.2 comes in three sizes — 3B, 8B, and 30B — all dense decoder-only transformers, all Apache 2.0, and all trained with the same multi-stage reinforcement learning pipeline, not just the usual “SFT + RLHF” gloss. The headline number: the 8B and 30B variants went through agentic RL — GRPO inside real sandboxed environments where they edit code, drive a terminal, and search the web. That’s no longer frontier-lab territory; it’s an open-weights 8B model.
What makes it different from every other “reasoning model”
The three sizes share architecture: GQA with 40 attention heads and 8 KV heads (8 for the 3B), RoPE with θ = 10,000,000, SwiGLU MLPs, RMSNorm (ε = 1e-5), separate input/output embeddings. Training used roughly 15T tokens across five phases, ending with a 512K-token context window. Every model has a thinking / non-thinking switch plus a low-effort mode that spends a short reasoning budget on easy questions. That’s useful in practice — I’d rather toggle thinking off for a classifier call than pay for CoT on every request.
The real differentiator is the post-training ladder. The pipeline runs in stages, each a separate GRPO run warm-starting from the previous checkpoint:
SFT ▸ RLVR ▸ Skill boosters ▸ SWE agent ▸ Terminal ▸ Search ▸ RLHF
The 3B gets foundational RL and RLHF only. The 8B and 30B add the agentic block, trained on real OpenHands-for-SWE, Terminus-2-for-terminal, and web-search-browsing trajectories. RLVR (verifiable-reward RL) used 256 prompts × 16 responses per step for a 4,096-example batch. The SWE 2 stage allowed 128 rollout turns per trajectory — the model actually reads code, edits files, and runs the test suite, rewarded only on whether the hidden tests pass.
Where it lands on the benchmarks
| Task | 3B | 8B | 30B |
|---|---|---|---|
| SWE-Bench Verified | NA | 47.67 | 57.00 |
| Terminal-Bench 2.1 | NA | 20.56 | 29.24 |
| τ³-bench | 45.78 | 58.06 | 62.00 |
| AIME25 | 78.33 | 86.67 | 89.17 |
| LiveCodeBench v6 | 69.71 | 73.24 | 75.77 |
| MMLU-Pro | 67.84 | 74.04 | 77.60 |
For a 3B model, AIME25 at 78.33 is strong — that’s the kind of result that used to require 10× the parameters. The 30B’s SWE-Bench Verified 57.00 and Terminal-Bench 2.1 29.24 are respectable for open weights, though well behind where the frontier closed models sit. The practical read: this is a credible open-weights option for agentic coding, not yet a Claude competitor. But it’s Apache 2.0, and you can run it — and fine-tune it — on hardware you actually own.
Running it today
Getting started is standard Transformers + vLLM. The thinking switch is a chat-template argument:
text = tokenizer.apply_chat_template(messages, tokenize=False,
add_generation_prompt=True, enable_thinking=True) # or False, or low_effort=True
The template also strips prior thinking from multi-turn history by default (truncate_history_thinking=True), which is a nice context saver. Tool calling emits OpenAI-format function calls without glue, and the post includes ready-to-paste configs for OpenCode, Pi, and OpenHands pointed at a local vLLM server. Quantized GGUF variants ship in 14 formats from Q8_0 down to Q2_K, plus FP8 / NVFP4 / MXFP4 for vLLM.
The catch
Only the 8B and 30B models get the agentic training, so if you wanted an agentic 3B that runs on a laptop, this isn’t it. Also note the eval table has gaps — no SWE-Bench numbers for the 3B, because it skipped the agentic block. And while the 8B and 30B have 131,072-token training sequence length, the 512K context claim comes from the pre-training phase; real-world long-context behavior at that depth still needs independent verification.
Still, this is the pattern worth watching: open-weights reasoning models are absorbing the “RL in real environments” playbook that’s been exclusive to a handful of labs. For anyone building agent infrastructure on self-hosted models — the same space this blog keeps circling — Granite 4.2 gives you a concrete new option with real SWE and terminal trajectories baked in, under a license that lets you actually deploy it.
Sources
- IBM Granite Team, “Granite 4.2 LLMs: How They’re Built” — https://huggingface.co/blog/ibm-granite/granite-4-2
- Granite 4.2 HF Collection — https://huggingface.co/collections/ibm-granite/granite-42-language-models
- Granite 4.2 language models GitHub — https://github.com/ibm-granite/granite-4.2-language-models