Edition 2026-10-30 · digest built 2026-10-30T12:06:13+00:00 · ⚙ ollama:deepseek-v4.1-flash:cloud
Backdoored Claude Code Extension Meets Enforcing Hooks, Plus Qwen3.8 Flash-Next Speed Records
Agent supply chain took a direct hit: the official Claude Code VS Code extension was trojanized to plant a persistent SSH backdoor, so audit installs and rotate keys today. On the build side, tested Claude Code hooks and a manual-only skill flag give deterministic control instead of hoping the model remembers. Qwen3.8 Flash-Next now serves 287 tok/s single-stream on one RTX PRO 6000 with published 1M-context images, and a fine-tuning study puts the label-noise break-even around 30%.
Treat editor plugins as production supply chain
The Claude Code VS Code extension compromise is the day's most urgent item: a trojanized build installed a persistent SSH backdoor on developer laptops, which means SSH keys, cloud tokens and repo access on those machines should be considered exposed. The same lesson applies to every MCP server, skill and agent plugin you paste into a config — the code runs with your credentials and can change after approval. Pin versions, review the source of anything that touches a shell, and keep agent tooling on a reviewed allowlist.
Local serving got measurably faster
Qwen3.8 Flash-Next numbers are now concrete: 287 tok/s single-stream and 965 tok/s at eight concurrent requests in FP4 on a single RTX PRO 6000, with ready-made FLARE 1M-context images for one or two GPUs. That combination — open weights, big context, real throughput — is what makes a self-hosted coding assistant viable for a small team instead of a hobby. Below that tier, M-Strata composes multiple inference engines so oversized quants still run on limited VRAM, LFM3 ships a fully offline 1.7B/2B pair on phones via ExecuTorch, and Rapid-H3 cuts local video+audio renders roughly 3-5x.
The small techniques that actually hold
The most reusable items today are unglamorous. A hook that jq-parses tool_input.command and blocks force-pushes beats any CLAUDE.md instruction because it runs every time, and disable-model-invocation keeps occasional skills from silently eating context. On the data side, fine-tuning held gains up to roughly 30% flipped labels before falling off a cliff at 40%, which gives you a defensible audit threshold for thumbs-up/down feedback. Add per-key budgets with reserve-then-settle accounting for agent loops, and watch for handlers that coerce a validated False back to True.
Today's findings
-
#1 Official Claude Code VS Code extension compromised to install a persistent SSH backdoortip
The official Claude Code VS Code extension was trojanized to plant a persistent SSH backdoor — treat your agent plugins as production supply chain.
Supply-chain warningcriticalOfficial Claude Code VS Code extension trojanized into an SSH backdoorVectorTrusted official install channel abusedPayloadPersistent backdoor hiding in SSH, systemd, cronExposureSSH keys, cloud tokens, repo access at riskaffected scopeAny dev laptop with the extension installed — same path applies to every pasted MCP server or plugincritical severity — badge colour grades the riskRotate keys & tokens · audit authorized_keys/cron · pin versions · allowlist installsWhy it matters: Anyone who installed the extension on a dev laptop may have SSH keys, tokens and repo access exposed, and the same attack path applies to every MCP server or plugin you paste into a config.
How to apply: Rotate SSH keys and cloud tokens for affected machines, grep ~/.ssh/authorized_keys and systemd/cron for unexpected entries and tunnels, pin and verify extension versions, and route agent tooling installs through a reviewed allowlist.
securityclaudesupply-chain
Read more: Anthropic hacked to deliver remote access trojan · Backdoors in official Claude Code extensions · Official Claude Code VS Code Extension Compromised to Install Persistent SSH Backdoor
-
#2 Ten Claude Code hooks, tested: start with the force-push and rm -rf blockertip
Hooks run deterministically on every call, so a command-inspecting hook beats CLAUDE.md for anything you actually need enforced.
Agent guardrailsRequest vs enforcementCLAUDE.md- A request, not a rule
- The model can forget it
- No hard failure path
Hook- Deterministic, every call
- Exit non-zero blocks the tool
- Start: block force-push & rm -rf
Anything you actually need enforced becomes a hookThen layer lint-and-test, banned paths, and secret scanning — test each in a throwaway repo.Why it matters: CLAUDE.md is a request the model can forget; a hook that parses tool_input.command and exits non-zero is a real guardrail against destructive commands in an agent session.
How to apply: Add a bash hook that jq-reads tool_input.command and blocks `git push --force`/`rm -rf`, then layer hooks for lint-and-test before commit, banned paths, and secret scanning — and test each one in a throwaway repo first.
claude-codehooksguardrails
Read more: Tested 10 Claude Code hooks in a throwaway project. A few gotchas worth knowing before you copy any
-
#3 Qwen3.8 Flash-Next: 287 tok/s FP4 single-stream on one RTX PRO 6000, with prebuilt 1M-context FLARE imagestool
A 27B-class open-weights model now serves coding traffic at 287 tok/s single-stream and 965 tok/s at 8 concurrent on a single card, with 1M-context images published for the FLARE engine.
SELF-HOSTED CODINGOne card now carries a team's code assistant287tok/s single-stream · FP4 · one RTX PRO 6000965 tok/s at 8 concurrent1Mtoken context, prebuilt FLARE image27Bclass open-weights modelFP4quantized weights on a single cardThroughput plus 1M context: self-hosting a coding agent goes from stall-prone toy to team tool.Why it matters: This is the throughput and context length that make a self-hosted coding assistant real for a team, instead of a toy that stalls on long agent loops.
How to apply: Pull the single-GPU FLARE 1M image (or the TP2 build for two cards), run FP4 weights, then benchmark your own prompt mix at concurrency 1 and 8 before sizing a shared queue and context budget.
local-llmquantizationqweninference
Read more: Qwen 3.8 Flash Next 'Flare' images for 1M context · Qwen 3.8 Flash Next 'Flare' images for 1M context · Qwen3.8 Flash-Next (FP4) on a single RTX PRO 6000: 287 tok/s single-stream coding, 965 tok/s at 8 concurrent
-
#4 Soft-MTP fixes a flaw in standard multi-token prediction trainingpaper
A soft-target/residual correction to MTP training keeps the downstream gains and the speculative-decoding speedup without the standard recipe's damage.
Multi-token prediction trainingSoft-MTP: keep the wins, drop the damageStandard MTP- Spec-decode speedup
- Downstream gains
- Quality damage
Soft-MTP- Speedup kept
- Gains kept
- Damage removed
Soft targets plus a residual correction to the MTP training objectiveWhy it matters: MTP is already in many pretraining stacks, so a cheap training-side fix that preserves fast decode matters for anyone fine-tuning models they then serve.
How to apply: Read the paper, check whether your fine-tuning framework supports auxiliary MTP heads, and A/B decode throughput with speculative decoding on versus off using the corrected objective.
paperinferencespeculative-decoding
Read more: [Paper] Multi-Token Prediction Done Right - Soft-MTP
-
#5 Fine-tuning survived roughly 30% label noise before falling off a clifftip
Across 4,000 pairs and three benchmarks, fine-tuning held its AUC gain up to ~30% flipped labels, then dropped sharply at 40%.
Why it matters: Production feedback labels come from thumbs up/down and are inherently noisy; knowing the break-even point tells you when to ship versus when to re-collect data.
How to apply: Sample-audit your feedback labels, estimate the flip rate, and if it lands under ~25% ship the fine-tune with confidence filtering rather than blocking on a perfect dataset.
fine-tuningdata-qualityevals
Read more: Fine tuning still helped with up to 30% label noise, on all 3 benchmarks we tested
-
#6 OXR: a 1.3B open document parser that returns typed Markdown/JSON with bounding boxespaper
A small open-weights model that preserves reading order and types 13 element kinds — tables, formulas, code — instead of flattening two-column PDFs into word soup.
DOCUMENT PARSING · OPEN WEIGHTSWord soup vs typed structurevsClassic PDF-to-textOXR (1.3B, open)Reading orderColumns interleavePreservedElement typesNone — just text13 kinds typedTables & formulasFlattenedMarkdown/JSONLayoutDiscardedBounding boxesDownstream RAGSilently poisonedClean chunksClassic PDF-to-text wins the row OXR (1.3B, open) wins the rowThe left side looks fine yet fails silently — judge chunks on a 20-question retrieval eval before swapping your ingestioWhy it matters: Silent PDF extraction errors poison retrieval and NER forever downstream, and a small local parser is far cheaper than rearchitecting your chunking strategy to compensate.
How to apply: Run OXR over your worst two-column and table-heavy PDFs, then compare chunk quality against your current extractor using a 20-question retrieval eval before swapping the ingestion stage.
ragdocument-parsingopen-weights
Read more: Reading order is the part of PDF parsing that quietly breaks downstream NLP
-
#7 LFM3-1.7B and LFM3-VL-2B run fully offline on iPhone and Android, with the ExecuTorch export open sourcedtool
A 1.7B text model and 2B vision model run entirely on-device, and the team published the app plus what it took to export LFM3 to ExecuTorch.
Why it matters: On-device inference removes per-token cost and keeps user data local, which is the only option for offline or privacy-sensitive features.
How to apply: Fork the open-source app, swap in your own prompts and tool schema, then benchmark first-token latency and peak memory on your oldest supported phone before committing to an on-device feature.
on-deviceexecutorchlocal-llm
-
#8 M-Strata composes multiple inference engines to run bigger local models on limited VRAMrepo
A community fork of Strata orchestrates several engines so a model that almost fits still serves from one machine, and users are reporting it working across dual B70 Pros.
Why it matters: It is the practical escape hatch when a 27B-class quant is a few GB too large but buying another GPU is not on the table.
How to apply: Try M-Strata with your existing GGUF and quant, measure prefill and decode against plain llama.cpp on the same prompts, and keep it only if the extra moving parts buy real throughput.
local-llminferencerepo
Read more: M-Strata (Multiengine Strata) · Strata on 2 B70 Pro's - Amazing!
-
#9 Cap per call when you write the calls; cap per key when the agent doestip
Per-call price checks belong in your own wrapper, while autonomous agents need per-key budgets with reserve-then-settle accounting.
Why it matters: Agent loops blow budgets through retries and step sprawl, not through any single expensive request, so call-level limits alone will not catch the spend.
How to apply: Wrap scripted jobs in a client that refuses calls above a set price, and for agents set hourly/daily/per-tool key limits that reserve the maximum before each bounded call and settle after it returns.
agentscostguardrails
Read more: Per-call caps vs per-key caps: which spend guard fits agents better?
-
#10 A LangChain tool can validate False and still hand True to its handlertip
Pydantic StrictBool validates the argument, but a handler that writes `value or True` silently flips a legitimate False back on.
LangChain tool bugA validated False still arrives as True1Tool callflag = False2StrictBoolFalse passes ✓3`value or True`truthiness flips itThe silent flip4Handlerreceives TrueSchema tests stop at the validator — assert on the arguments the handler actually receives.Why it matters: Silent default coercion is exactly the class of bug agent tooling hides until it misroutes a production query, and schema tests will never catch it.
How to apply: Grep tool handlers for `or` defaults and truthiness fallbacks, replace them with explicit None checks, and assert on the exact arguments the handler receives rather than only on schema validation.
langchainagentstesting
Read more: A LangChain tool can validate False and still discard it in its handler
-
#11 disable-model-invocation keeps a Claude Code skill manual-onlytip
Setting `disable-model-invocation: true` in SKILL.md frontmatter leaves the skill invocable as /changelog without Claude auto-loading it mid-task.
Why it matters: Model-chosen skill loading burns context and produces surprises; explicit invocation keeps occasional workflows predictable and cheap.
How to apply: Add the flag to rarely needed skills like changelog, weekly report and release notes, and keep only broadly relevant skills model-invocable so they can still trigger automatically.
claude-codeskillscontext
Read more: How to stop Claude Code loading a skill automatically
-
#12 Rapid-H3 cuts MiniMax-H3 video+audio renders 3-5x on a single DGX Sparkrepo
A ComfyUI node pack with two presets takes a 768x1344, 141-frame clip with audio from ~600s stock down to ~117s on one GB10.
Why it matters: Fast enough local video generation turns iteration from overnight batches into something you can actually review and re-run in a session.
How to apply: Install the node pack, start with the ts_h2 preset for first-frame clips and ts_s6 for camera moves or close-up faces, then diff motion, voice and lip sync against stock output on your own clips before adopting.
comfyuivideoinference
Read more: Rapid-H3: Super fast H3 video + audio in about 2 minutes on one DGX Spark · Rapid-H3: Super fast H3 video + audio in about 2 minutes on one DGX Spark