OSS tools Agent Skills → Agentic AI Foundation · SageMaker training session APIs · vLLM / SGLang quiet
OSS tools and ML practice this window: Anthropic donated Agent Skills to the Linux Foundation’s Agentic AI Foundation (Oct 22). AWS shipped SageMaker AI training session APIs (Oct 22). vLLM v0.32.0 and SGLang v0.5.22 still latest; no new advisories.
Anthropic news Oct 22. A skill is “a folder containing a SKILL.md file that teaches an agent a specific task or domain, along with any scripts or reference material it needs.” Standard published December 2025; “More than 70 agent platforms, including ChatGPT, Cursor, GitHub Copilot, and VS Code, have integrated Agent Skills”; “1 million skills have been published and nearly 280 million installed” (Anthropic’s figures). Donation covers the name and logo, GitHub org (agentskills/agentskills) and agentskills.io. “Engineers from Anthropic, Google, OpenAI, and other companies will maintain the standard as individuals, with David Soria Parra and Mahesh Murag as Lead Maintainers.” Proposed roadmap: “versioned releases, a formal proposal process, and security guidance for people who write and install skills.” AAIF already hosts MCP.
What’s New Oct 22 12:30 PM ET; ML blog 2:00 PM ET. Serverless model customization adds training session APIs: “teams get to write the training loop, whether that’s reproducing SFT or DPO on their own terms or implementing a custom loss, a new RL reward signal, a data curriculum.” Operations (forward_backward(), optim_step(), sample()) are called from your own Python “against a live session, with checkpointing and resume built in. Billing is per token processed, so local computation like reward scoring isn’t billed as GPU time.” Regions per the announcement: US East (N. Virginia), US West (Oregon), Asia Pacific (Mumbai). Same day: serverless customization for Muse Glimmer, Qwen 3.8 and Ministral 3 (4:00 AM ET).
vLLM v0.32.0 (Oct 18) still latest; advisories newest the Oct 20 batch. SGLang v0.5.22 (Oct 19 UTC) still latest; no advisories. Both projects now have MiniMax M3.1 Flash serving pages linked from the model card (vLLM: TP4 on Blackwell or MI355X, TP8 on H100/H200). Datacenter recipes; no Apple Silicon path.
PyTorch blog Oct 21 19:45Z (≈3:45 PM ET). TitanRL: async rollouts; same model implementation from pretraining through post-training and inside vLLM; batch-invariant mode gives bitwise-identical trainer/generator log-probs in supported on-policy configs (“the gap between them is exactly zero”). Demonstrations: SWE-Rebench easy with Qwen3.5-35B-A3B base at 64K context on 40 GB300; Tmax 15k train / Terminal-Bench 2.1 eval at 128K on 20 GB300. Composable config system (typed Python recipes, model-config transforms, component overrides); Attention Gym kernels (Gated DeltaNet, Kimi Delta Attention) and Helion kernels; fused comm-compute kernels for SM100+; MXFP8 DeepSeek V3 671B+MTP on MLPerf training (internal GB300). Project-reported. Also Oct 21: FlyDSL on AMD GPUs; AWS ML blog “Train Qwen3 on AWS Trainium with torchtitan.” vLLM v0.32.0 (Oct 18) latest; advisories newest Oct 20. SGLang v0.5.22.
Both published Oct 21 00:57Z (≈8:57 PM ET Oct 20). Ray Data: fix out-of-scope block callbacks registered on blocks passed through from input to output (#66369; cherry-picks #66404 / #66403) — spurious callback errors on passthrough datasets. Images: google-cloud-cli installed in base-extra images (#65757). vLLM: v0.32.0 (Oct 18) latest final, v0.32.1rc0 tag; security advisories newest Oct 20 07:37Z (the nine in Issue 42). SGLang v0.5.22 (Oct 19 UTC); no advisories.
Published Oct 20 07:33–07:37Z (≈3:33–3:37 AM ET); every one lists patched: 0.32.0. High: GHSA-h3rc-j82p-2c3h (CVSS 8.1) — ImageMediaIO passed attacker bytes to Pillow format autodetection; an EPS payload labeled image/png reached the host Ghostscript; with Ghostscript affected by CVE-2024-29510 that is a command-execution path (loader-level reproduced; HTTP path source-traced, not run end to end); affected 0.30.0. GHSA-6757-hggm-hp2w (7.5) — with --mm-processor-cache-type shm, a forged SHM address/monotonic_id pair reaches worker-side pickle.loads() (authenticated caller; listed affected ≤0.25.1). Medium (6.5): GHSA-542m-9234-8gvf — unbounded chat-template Jinja rendering (<100-byte request) wedges the single renderer thread for all tenants (≥0.19.0); GHSA-x567-49g5-p4cf — /v1/responses bypassed trust_request_chat_template for chat_template_kwargs (0.16.0–0.23.0); GHSA-q97c-p368-75c4 — pre-tokenized token id equal to vocab size passes validation and triggers a CUDA device-side assert (≤0.30.0); GHSA-frvg-qw88-hww9 / CVE-2026-94624 — P2P secondary-tier peers never connected exhaust the ZeroMQ socket quota (0.26.0); GHSA-gq5q-89c7-vhvx — DeepSeek-OCR family: an image whose normalized pixels sum to exactly 0 trips an assert and kills the engine (0.30.0); GHSA-8397-8qf6-f2gm — Phi-4 multimodal audio encoder retains full attention matrices; a max-length (600 s) clip OOMs the engine (0.31.0). Low (3.4): GHSA-vvpg-rrww-wpmh — default allowed_origins=["*"] lets any web page read responses from an unauthenticated server the browser can reach. Closes Issue 41 Watch: q97c and frvg (404 yesterday) are now public. Still a mismatch: v0.32.0 notes cite GHSA-4hhp-h66f-j5j7 for chat-template exhaustion; 4hhp is the Aug 13 MiMoV2Omni SSRF (patched ≥0.26.0). The chat-template advisory is GHSA-542m.
Published Oct 19 17:45Z (≈1:45 PM ET). Fixes inputs losing their original type inside prepare_inputs_for_generation in generate (broke multimodal models; #49731); zero expert gradients in bfloat16 with expert parallelism (#49688); declared input modalities for VLMs that reported text only (#49677); avoids a host-to-device copy in eager_mask (#49684). Note from Issue 41 still applies: vLLM 0.32.0 pins transformers <5.20.0.
PyTorch blog Oct 19: “Introducing TorchNeuron: Native PyTorch backend for AWS Trainium” (also HF blog Oct 19). AWS ML blog Oct 19: “Push-based KV transfer to improve TTFT and TPOT for disaggregated inference in vLLM” and “Improve TTFT for multi-turn agentic workloads with bi-directional KV transfer in vLLM.” Listed for completeness; titles only.
Published Oct 18 06:50Z (≈2:50 AM ET Sun); 814 commits / 363 contributors. Highlights: POST /v1/systemone structured decisions (choice / noul / score) served by default; --tool-call-parser hf / --reasoning-parser hf read the checkpoint’s response_template; NVFP4 KV cache on SM8x/SM12x/SM90; GLM-5.x FP8 KV default on SM100; MRV2 GPU n-gram speculator, Elastic EP; vllm download-kernels, vllm preload --preload-autotune; least-loaded API worker routing (43–85% more req/s in the PR’s Qwen3-0.6B microbenchmark, project-reported). New models: EmbeddingGemma 2, MiniCPM-V 4.7, Nemotron 3.5 ASR, clef-omni, LiquidAI d1-3B. Security: fixes listed for GHSA-4hhp-h66f-j5j7 (“chat template resource exhaustion”, #50300), GHSA-q97c-p368-75c4 (tokenizer max_token_id, #59491), GHSA-frvg-qw88-hww9 (P2P ZMQ socket exhaustion, #51504); CORS default * → none (#61009; set --allowed-origins); untrusted images raster-only (#60022); signed shared-memory MM cache handles (#59357); JSON schema depth >64 rejected (#60036). Flag: on GitHub, q97c and frvg return 404 (unpublished), and the public GHSA-4hhp-h66f-j5j7 is a different issue (MiMoV2Omni SSRF / local file read, published Aug 13, patched ≥0.26.0) — track by PR. Breaking: Python 3.10 dropped; transformers>=5.16.1,<5.20.0; cascade attention, torch.compile SP/AsyncTP passes and mamba_cache_mode="all" removed; max_tokens no longer reserved from context; Responses reasoning stream events renamed. Release notes do not mention Beam or Muse Spark Open. Newest published advisory batch on the repo remains Oct 9.
Released Oct 15 18:00Z. AWS Trainium support with guide; pad_to_multiple_of defaults to "auto" (128 on Neuron; Qwen3-0.6B SFT 20 steps 130 s vs 260 s). Fused LM head / distillation kernels without Triton; activation offloading on any accelerator. Tree attention for AsyncGRPO (#7328): micro-batch rows packed as prefix trees, one FA3 varlen call per segment, no mask tensor. Qwen3-1.7B, 32K tokens/rollout, fwd+bwd: packing ratio 3.37 shared prompt 8179 → 2755 ms (2.97×), nested fork 3.56 8172 → 2635 ms (3.10×); peak 35.2 → 13.5–13.6 GiB; ~1% cost when nothing is shared HF-reported. Muse Spark Open: LoRA SFT on 8 nodes × 8 H100 with DistributedConfig(fsdp_size=64, ep_size=8), 14.2 s/step, 131k tokens/step, 40.2 GB/GPU; needs transformers ≥5.20.0 (adapter save also needs transformers#49500 + peft 0.21.2).
PyTorch blog Oct 15, 2026 (Meta + Arm). Runs exported, quantized PyTorch models directly on Arm Cortex-M CPUs with CMSIS-NN; complements the Ethos-U NPU path (Cortex-M passes run after Ethos-U partitioning). Demo models on Alif Ensemble E8 run in ≤21.5 ms and <90 KiB RAM on one Cortex-M55 core; core runtime <20 KiB flash with selective operator build Meta/Arm-reported. Latest ExecuTorch release tag still v1.5.1 (Sep 23).
Published 2026-10-09T05:55Z ≈ 1:55 AM ET. SFT, DPO, KTO, GRPO, RLOO and distillation score tokens through a Triton kernel that projects hidden states through the LM head in tiles and reduces straight to per-token log-probs and entropy, so the [batch, seq, vocab] logits tensor is never built (#7386, #7387, #7389, #7390, #7466, #7465). On by default. HF benchmark (1× B300 capped at 79 GiB, gemma-3-1b-pt random bf16 weights, batch 1, gradient checkpointing, sdpa): max length DPO 10,240 → 59,392 (5.80×), KTO 9,216 → 63,488 (6.89×), GRPO scoring 28,672 → 114,688, RLOO 23,552 → 100,352, SFT nll 20,480 → 107,520; SFT default chunked_nll unchanged. At 8,192 tokens peak memory −52% to −82%, steps 2.3–10.9% faster (HF-reported; not measured: H100 itself, flash-attention, real generation, multi-GPU). Needs Triton on a GPU (Linux with CUDA, ROCm or XPU). 💥 Breaking: full-logits scoring path, use_liger_kernel chunked path and _forward_redirection removed from GRPO/RLOO/DPO/KTO; a PEFT adapter on lm_head raises (use modules_to_save=["lm_head"]); use_liger_kernel=True deprecated (removal v2.0.0; use model_init_kwargs={"use_kernels": True}); DPO/KTO compute_metrics full logits come from an extra forward (deprecated). Also: selective activation checkpointing in SFT (gradient_checkpointing_kwargs={"selective": True}; PEFT + ZeRO-3 rejected) (#7194); assistant-only loss on vision datasets.
Published 2026-10-06T07:06Z ≈ 3:06 AM ET Oct 6. Severity High, CVSS 8.1 (AV:N/AC:H/PR:N/UI:N). Affected ≥0.7.3, <0.31.0; patched ≥0.31.0 (#58830). A request can set mm_processor_kwargs.code_revision; when the served model’s processor uses dynamic auto_map.AutoProcessor code and the operator enabled --trust-remote-code, the value reaches AutoProcessor.from_pretrained and selects which Python revision Transformers imports, i.e. arbitrary code in the API/renderer process. The model/data revision stays pinned; only the processor code changes. Preconditions: dynamic processor code, trust-remote-code on, the server can fetch or has cached the chosen revision, the attacker can create or control a revision (e.g. an HF community PR ref), and a multimodal request reaches the processor path. mm_processor_kwargs is accepted on TokenizeChatRequest and ChatCompletionRequest; /tokenize is outside the --api-key middleware (which guards /v1, /v2, /inference, /cohere). Default trust_remote_code=False is not affected. Correction: Issues 32 and 33 listed four Oct 6 advisories (p92p, 4xqp, 823j, 6cxc) and missed this one. Context: 0.31.0 also refuses request mm_processor_kwargs unless --trust-request-mm-kwargs is set (Issue 31).
Published 2026-10-06T20:30Z ≈ 4:30 PM ET. #7505: GRPO, RLOO and Distillation on the default generation path (use_vllm=False). Models that end a turn with an id only their generation config declares (Gemma 3/4, Phi-3.5, …) did not stop at the end of the turn, and everything generated after it was trained on, up to max_completion_length. “The only visible sign was completions/clipped_ratio close to 1.” With vLLM, generation stopped correctly but metrics were wrong, and mask_truncated_completions=True dropped every finished completion. Models whose tokenizer eos is their only end-of-turn id are unaffected. Also: finite DFT loss on batches with no trainable tokens (#7471); precompute_ref_log_probs under FSDP with no reference model (#7507); completion start where prompt and prompt+completion tokenizations diverge (#7463); guarded requests/urllib3 imports in the vLLM client (#7545).
Published 2026-10-06T16:39Z ≈ 12:39 PM ET. New model: EmbeddingGemma2. 🚨 Breaking: every MoE model whose router computes logits now returns them when output_router_logits=True, following the Qwen3-MoE pattern (#48920). OWLv2 embed_image_query now picks the query box by objectness (#49200). The paged| prefix for sdpa and flash attention is deprecated, and regular attention now supports continuous batching (#49112, #49101); paged|eager remains. The CB cache update for the index and block-table paths is fused (#49088). Parallelism: expert-parallel token dispatch is the default for Qwen3 MoE and Mellum, so EP size no longer needs to equal TP size (#48865), and the Trainer works with EP (#48873). Cache: quantized cache fixed and generate no longer mutates cache_config (#48700); per-layer cache configuration (#48178). Also a WatermarkDetector repeated-ngram counting fix (#49315).
Published 2026-10-06T20:45Z ≈ 4:45 PM ET. Severity Low (CVSS 3.1 3.7; AV:N/AC:H/PR:N/UI:N/I:L). V1 InputBatch.condense() copies a moved request’s allowed_token_ids mask row into the freed index but never clears the source row. A later unrestricted request that reuses the slot inherits another client’s allowlist and still returns HTTP 200. Exploitation needs concurrent requests and a condense slot-reuse race, and impact is vocabulary steering, not arbitrary text. Unauthenticated /invocations sits outside --api-key guards. Header: patched in ≥ 0.31.0. The body says the fix (#43931) was not in a tag “as of v0.30.0”, which is consistent. A related swap_states aliasing fix is #48419. This is the fourth vLLM advisory published Oct 6.
Tagged 2026-10-06T18:52Z ≈ 2:52 PM ET; headline commit “[Metrics] Expose cached prompt tokens by cache tier (#56318)”. RC only; 0.31.0 remains the fix version for the Oct 6 advisories.
Posted Oct 6. An LLM judge tags each rollout with a rubric vocabulary shared across environments. The rubric profiles then guide online prompt-group selection and policy supervision (self-distillation) when scalar rewards give no within-group contrast, as with all-fail or all-success groups. Author findings.
Published Oct 6 (~3 AM ET). Severity Moderate; affected < 0.31.0; patched ≥ 0.31.0. A body on /inference/v1/generate with sampling_params.max_tokens null and min_tokens 2147483648 skips the min_tokens <= max_tokens check in the API process. The EngineCore re-validates it on decode, one line above the try that guards request handling, so the input thread dies. That thread was the only reader of the input socket. check_health looks only for a recorded error, so /health keeps answering 200 while every request hangs. Reach: mounted by default on vllm serve in v0.29.0, unauthenticated unless --api-key; on main only with VLLM_ENABLE_SCALE_OUT_ENDPOINTS=1 or --tokens-only. “One 92-byte request.” OpenAI routes resolve max_tokens first and return 400.
Published Oct 6. Severity Moderate; < 0.31.0; patched ≥ 0.31.0. The user-supplied uuid on image_url / video_url / input_audio parts is used verbatim as mm_hash. The API-process (P0) and EngineCore (P1) LRU caches evict independently, and the P1 hit path does no consistency check. Sequence: seed a small image with uuid U, then send ~70 requests with unique uuids and oversized prompts. Each returns 400, but only after its image is inserted into P0, so U is evicted from P0 alone. Then send a large image with uuid U. The engine substitutes the stale tensor, a placeholder-count ValueError goes uncaught, and the engine dies. /health never recovers until a full restart. Verified on vllm/vllm-openai:v0.29.0 with Qwen2.5-VL-3B-Instruct at default flags.
Published Oct 6. Severity High; affected > 0.24.0, < 0.31.0; patched ≥ 0.31.0. With a MOSS-Audio model loaded, /tokenize accepts request-controlled mm_processor_kwargs. Each distinct config builds a MossAudioProcessor (with a WhisperFeatureExtractor mel-filter array) stored in an unbounded dictionary. Oversized mel_config values amplify a single request. “/tokenize is intentionally outside vLLM’s API-key-protected route prefixes, so --api-key alone does not restrict access.” Mitigation: upgrade to 0.31.0, and block /tokenize at the proxy if unused. All three advisories were reported by jperezdealgaba.
Listed in the Apple ML Research feed on Oct 1 (EPFL / Apple authors). Under equal wall-clock time and the same frontier backbone, open-source state-of-the-art MLE harnesses gave no advantage over a single session of a minimal-harness coding agent with read / write / bash tools. The authors conclude the backbone model, not the scaffolding, is the primary driver. Author findings on the benchmarks studied. Takeaway: baseline a plain agent before adding multi-agent orchestration.
Release created 2026-10-02T07:04Z (≈3:04 AM ET Fri Oct 2; feed updated 17:58Z). Ray Data LLM and Ray Serve LLM APIs graduate to GA/Stable (#65194) with vLLM 0.27.0 (#65351). Token authentication on by default for local clusters: ray.init() without an address enables auth and generates ~/.ray/auth_token if missing; ray start --head enables auth when a token exists, otherwise warns; remote/multi-node unchanged; opt out RAY_AUTH_MODE=disabled (#64755). Dashboard redacts runtime_env values in browser-facing endpoints (#65226); read_hudi unpickling guard against RCE (#65780). Ray Data external disk-backed shuffle_v2 (renamed from hash_shuffle_v2); ORC reads; multi-path read_lance; read_videos fps/resize.
Joint Microsoft + HF blog 2026-10-03T22:56Z ≈ 6:56 PM ET Sat Oct 3. Sandbox runs agents against isolated MCP tool sessions and grades terminal backend state + side effects with deterministic judges (477 of 507 tasks state-only; 30 add rubric questions). 507 workflows across retail, auto insurance, travel, neobank, consulting; each run 20× from a clean backend; reports pass@1, pass@20, observed 20/20. Author-reported highlights: Claude Opus 5.5 67.16% pass@1 overall (Opus 5 66.50%) yet both pass 241 tasks 20/20; Kimi-K3 strongest open-weights (57.37% pass@1; 93.89% pass@20; 13.41% 20/20); GPT-6 Astra retains 78% of pass@1 at 20/20. Failure signatures: tool usage 79.9%, wrong state updates 10.3%, incomplete resolutions 7.0%, no state-changing action 2.9%. Costs estimated at undiscounted OpenRouter list rates — author-reported, not invoices. Run via OpenEnv (envs/thinkingbox_env), microsoft/thinkingbox-data at thinkingbox-bench-v1.0, tb CLI, Typesense 30.1 in Docker; tested on Linux/WSL with Python 3.11+.
GitHub release Fri Oct 2, 2026 (~1:09 AM UTC). Highlights: new model cookbooks including DeepSeek-V4.1 Flash, GigaChat 3.5, MiMo-V2.6, DiffusionGemma, FLUX 3 Action, others; PD instances can switch prefill/decode on the fly without restart; prefix cache on a Rust core by default; new Decisions API (/v1/decisions) and Score API (/v1/score). Project claims: DeepSeek-V4.1 ~22% faster first token on long prompts; Kimi K3 ~20.6% higher prefill throughput in PD — project-reported. Install: uv pip install --prerelease=allow sglang==0.5.21; Docker tags lmsysorg/sglang:v0.5.21 (+ ROCm/XPU variants).
Ai2 / Hugging Face blog Thu Oct 1, 2026. Redesigned open MoE training system (DDP-based experts resident on GPU; expert / pipeline parallelism; distributed optimizer; rowwise expert parallelism; GPU-resident routing; grouped GEMM; MXFP8). Benchmark narrative: expert pool 8→128 selecting 4 experts/token (~3.2B active) with <5% throughput drop; preliminary 47B MoE ~52k tok/s/GPU vs ~19.4k prior on 8× B300 (~2.7×); MXFP8 ~21% higher throughput vs BF16 on 4× B300; 1.2T-parameter config across 512 GPUs (858 TFLOP/s/GPU peak observed with random routing). All benches Ai2-reported. GitHub + technical report linked from post.
ServiceNow CoreAI / Hugging Face blog Fri Oct 2, 2026. Pipeline turns target-model failures + stronger-teacher successes into capability cards, then generates validated agentic tasks (system spec + user prompt + verifier) with positive/negative verification and bounded repair; target + multiply phases. Illustrated on EnterpriseOps Gym. Hybrid: Gemma-4-26B-A4B-it target, Qwen3.8-27B teacher, ~2,000 samples / ~18h — author reports mean Pass@1 +7.2 pp (35% relative) and verifier success 63.01%→68.55%. ITSM: DeepSeek-V4.1-Flash teacher, Pass@1 18.77%→27.18%. All deltas author-reported on named pairs — not a general agent GA claim.
Published 2026-09-25T06:40:07Z ≈ 2:40 AM ET Sep 25. Removes trl.losses fused Liger loss reimplementations; DPO/KTO/GRPO stream selected-token log-probs via _ChunkedLogProbFunction then use each trainer’s own loss. Ships in-tree fused Triton logprob+entropy kernel at trl.kernels (default on CUDA/ROCm/XPU). Breaking: six experimental trainers removed (GRPOWithReplayBufferTrainer, BCOTrainer, PRMTrainer, XPOTrainer, NashMDTrainer, GSPO-token). Supported vLLM window moves to >=0.20.0,<=0.30.0 (adds 0.30.0). Do not re-lead Issue 24 vLLM Sep 23 GHSAs.
Published Wed Sep 23 ~6:16–6:25 AM ET (10:16–10:25 UTC). Hub index: security/advisories. Availability-only DoS / resource exhaustion; remediation upgrade to ≥ 0.30.0 (ranges vary). Issue 23 covered only the Sep 22 NIXL/Mooncake batch — these Sep 23 GHSAs are the Issue 24 delta.
GHSA-85xf-c7hm-whqw (~6:16 AM ET) — Moderate; affected < 0.30.0 (confirmed path ≤0.25.1); patched ≥ 0.30.0. Three structured-output request paths raise uncaught, engine-fatal exceptions → _send_engine_dead(); one bad request DoSes all tenants on that EngineCore. Sites: latched auto/xgrammar compile; ngram_gpu-1 padding into guidance validate_tokens; Rust frontend empty structured_outputs.json/grammar. Credit: Patch the Planet (Trail of Bits + OpenAI); proposed public PR #51450.
GHSA-58v5-2m8f-94pr (~6:20 AM ET) — Moderate; affected ≥ 0.23.0rc2, < 0.30.0; patched ≥ 0.30.0. Request-level media_io_kwargs.video with video_backend: "glmga" + large fps/max_frames builds huge pre-decode index lists → CPU/memory exhaustion on shared media executor. Reachable without API key when none configured.
GHSA-5fj9-pfhr-6j48 (~6:23 AM ET) — Moderate; affected < v0.30.0 (Rust frontend / vllm-rs); patched ≥ 0.30.0. Prometheus middleware uses raw HTTP method tokens as labels → unbounded cardinality / OOM; /metrics outside API-key guard prefixes. Permanent series until process restart.
GHSA-x6mc-67gf-chw4 (~6:25 AM ET) — Moderate; affected ≥ 0.24.0 (through 0.29.1rc0 / cited main); patched ≥ 0.30.0. Qwen2-VL / Qwen3-VL samplers honor request max_frames/fps (ignore num_frames clamp from related GHSA-vxqj / PR #51969). Advisory cites unauthenticated POST /metrics RSS jump. No CVE IDs assigned on these four pages at research time — stick to GHSA ids.