Edition 2026-10-28 latest · digest built 2026-10-28T12:06:32+00:00 · ⚙ ollama:deepseek-v4.1-flash:cloud

Claude Code Goes Mechanical: Deny Rules, Dumb Tests, Pinned Subagents, and Strategic Forgetting

Today's strongest material is operational: Claude Code constraints become mechanical deny rules and durable tests, subagents get pinned models, and agent designers get a Berkeley result favoring disciplined context resets. Local inference gets practical attention through shura.cpp's VRAM governor, FlashMap speculative decoding, and a detailed Qwen3.8-27B AMD config. Evaluation hygiene rounds out the day, from invisible Unicode breaking graders to versioning prompts against real eval sets.

Claude Code Discipline

The most reusable Claude Code advice today is about making agent behavior survive context loss. Mid-session rules should become committed deny entries, and old architectural decisions should become small tests that fresh sessions cannot casually undo. Cost control follows the same pattern: pin subagent models explicitly instead of letting routine work inherit an expensive default.

Agent Memory and Security

Agent researchers are revisiting memory as a design variable, not just a bigger context window. A Berkeley paper reports that periodically dropping history and restarting from the best candidate can beat parallel agents, while Hillock offers a local neuro-symbolic memory engine for retrieval that should return nothing when the corpus has no answer. Security teams also get a concrete reminder: detection is not enforcement unless the guard actually blocks and the app honors that verdict.

Local Inference and Tuning

Local-model work today skews practical. shura.cpp adds a VRAM governor for sharing one 16 GB GPU with desktop use, FlashMap introduces another speculative-decoding avenue for faster generation, and a Qwen3.8-27B config shows how careful llama.cpp settings can keep a 20 GB AMD card out of RAM spill even with long histories.

Evaluation Hygiene

Two small process fixes can prevent misleading results. Invisible Unicode can flip LLM-as-grader verdicts, so graders should reveal or normalize hidden characters. More broadly, prompts should be versioned like code with a small real-input eval set, reviewed diffs, drift logs, and a one-step rollback path.

Today's findings

  1. #1 Turn transient Claude Code rules into mechanical deny entriestechnique

    Put mid-session constraints into committed .claude/settings.json deny rules so they survive context loss and chat resets.

    Claude Code guardrails
    Turn transient chat rules into committed deny entries
    Said in chat
    • Rule lives in chat
    • “Don’t touch migrations”
    • “No merge before review”
    • Forgotten after reset
    Committed as deny
    • Rule lives in settings.json
    • Edit(migrations/**)
    • Bash(gh pr merge *)
    • Checked before allow
    Deny is checked before allow; expiry stays human-owned.

    Why it matters: Agents forget conversational instructions, but deny entries are checked before allow and persist with the repository.

    How to apply: Convert path-shaped rules like “don’t touch migrations” to Edit(migrations/**), action-based rules like “don’t merge before review” to Bash(gh pr merge *), commit the settings, and keep expiry or removal human-owned.

    claudeagentsguardrails

    Read more: Temporary rules for Claude Code: make the block mechanical and the expiry human

  2. #2 Encode old architectural decisions as dumb teststechnique

    Write tiny tests for deliberate constraints so fresh Claude Code sessions cannot “clean up” decisions they do not understand.

    Why it matters: Long-lived repositories contain non-obvious invariants, and tests act as durable memory that agents must respect.

    How to apply: For each historical decision, add a minimal test such as a concurrency cap or no-extrapolation check, include a comment linking the rationale, and run it in CI or the agent loop.

    claudetestingagents

    Read more: What finally stopped Claude Code from undoing my old decisions: turning them into dumb tests

  3. #3 Pin subagent models to keep Claude Code costs predictabletip

    Pin every custom subagent to Sonnet or Haiku in frontmatter and choose Opus only per task with a written rule.

    Claude Code cost control
    Pin subagents to stop silent Opus spend
    Pinned subagent
    • model: sonnet or haiku in frontmatter
    • Routine work stays on cheap models
    • Cost per agent stays predictable
    Inherited model
    • Subagent copies the main-loop model
    • Routine calls quietly run Opus
    • Bills spike with no signal
    Pin every subagent to Sonnet or Haiku; let Opus in only via a written per-task rule.
    Apply: add model: sonnet or model: haiku to each subagent, then audit cost per agent.

    Why it matters: Inherited main-loop models can silently turn routine subagent work into expensive Opus calls.

    How to apply: Add model: sonnet or model: haiku to each subagent definition, keep a short decision rule for when Opus is allowed, and audit cost per agent.

    claudeagentscost

    Read more: How I configure subagents so the cost stays predictable

  4. #4 Forget history to explore better: reset agents from the best candidatepaper

    Berkeley’s “Scaling Discovery Requires Forgetting” reports that agents periodically discarding session and search history while keeping the best candidate beat parallel agents by up to 15%.

    Why it matters: Accumulated context can entrench bad paths and waste tokens; disciplined resets can improve discovery quality.

    How to apply: Store the best artifact plus its score, start fresh context from that candidate when progress plateaus, and benchmark the reset policy against a parallel-agent baseline.

    agentscontextpaper

    Read more: Berkeley paper: agents that dropped their own history beat parallel agents by up to 15%. What do you keep when you reset context

  5. #5 Check whether your agent security layer actually blocks flagged contenttechnique

    StackOne’s open-source Defender shows detection can flag risky content without blocking unless blockHighRisk is enabled and enforced by the app.

    Why it matters: A dashboard saying “prompt injection detected” creates false assurance if tool results still reach the agent.

    How to apply: Audit guard configuration, force high-risk findings into deny verdicts, test application enforcement rather than logging alone, and define fallback behavior when an optional LLM reviewer refuses.

    agentssecuritymcp

    Read more: How to check whether your AI agent's security guard actually blocks what it flags

  6. #6 shura.cpp adds a VRAM governor to llama.cpprepo

    A llama.cpp fork targets sharing one 16 GB GPU between a 35B MoE model and normal desktop use.

    shura.cpp — a llama.cpp fork
    A 35B MoE can share your 16 GB GPU with the desktop — only inside hard limits
    bounded capability
    Run Tiel-Coder-35B-A3B beside everyday desktop apps
    limit Hard 16 GB VRAM cap
    scope Reserved desktop headroom
    monitor Governor enforces cap
    Caps prevent OOM failures and desktop stutter; decode speed vs swapping still needs a head-to-head.

    Why it matters: Local agents often need to coexist with workstation apps, and hard VRAM caps can prevent out-of-memory failures and desktop stutter.

    How to apply: Try shura.cpp’s governor with Tiel-Coder-35B-A3B on a 16 GB card, set explicit headroom, and compare decode speed and swapping against upstream llama.cpp.

    llama.cpplocal-llmvram

    Read more: shura.cpp: a llama.cpp fork with a VRAM governor, so a 35B MoE can share one 16 GB card with the desktop you keep using

  7. #7 Hillock v1.0 swaps probabilistic RAG for local neuro-symbolic memoryrepo

    Hillock v1.0 is a local memory engine that claims deterministic retrieval under 1.2 GB VRAM to avoid hallucinated vector hits on unanswerable questions.

    Why it matters: Vector search always returns nearest chunks, which can push small local models into confident hallucinations when the corpus lacks an answer.

    How to apply: Test Hillock with an unanswerable-query eval set and compare latency, VRAM use, and hallucination rate against your current vector RAG stack.

    ragmemorylocal-llm

    Read more: After 6 months of daily building, I just released Hillock v1.0 stable: a local neuro-symbolic memory engine that runs under 1.2GB VRAM with zero hallucinations · After 6 months of daily building, I just released Hillock v1.0 stable: a local neuro-symbolic memory engine that runs under 1.2GB VRAM with zero hallucinations · Vector search is probabilistic and causes hallucinations on unanswerable queries. After 6 months of testing, Hillock v1.0 is out to fix it. · Vector search is probabilistic and causes hallucinations on unanswerable queries. After 6 months of testing, Hillock v1.0 is out to fix it.

  8. #8 FlashMap brings flow-map speculative decoding for local inferencepaper

    Princeton and Polymathic AI released FlashMap, a flow-map speculative decoding approach aimed at faster generation.

    Paper release
    Flow-map speculative decoding for faster local LLMs
    FlashMap
    feature Paper
    Princeton + Polymathic AI
    runRead the paper
    Faster local generation without new hardware — port benchmarks pending.

    Why it matters: Speculative decoding is one of the most direct ways to reduce local LLM latency without upgrading hardware.

    How to apply: Read the paper and watch for llama.cpp or vLLM implementations; benchmark acceptance rate, memory overhead, and throughput against standard draft-model speculative decoding.

    local-llminferencespeculative-decodingpaper

    Read more: Princeton and Polymathic AI release FlashMap: Flow Map Speculative Decoding · Princeton and Polymathic AI release FlashMap: Flow Map Speculative Decoding

  9. #9 Invisible Unicode can break LLM eval graderstip

    A single invisible Unicode character flipped Claude Code and other grader verdicts; annotating exact character names and positions fixed judgments.

    Eval pitfall
    One invisible character flipped the grader
    1
    zero-width Unicode character — present in the text, invisible to the eye — was enough to flip Claude Code's verdict
    pass → fail
    0 px
    visible width of the culprit glyph
    1 note
    naming each character and its position restored the correct judgment
    Reveal or normalize invisible characters before an LLM grader scores the text.

    Why it matters: Eval scores can be wrong for invisible formatting reasons, making prompt and model comparisons unreliable.

    How to apply: Normalize or reveal zero-width and invisible characters before grading, append a generated note listing each character and position, and add regression cases to the eval set.

    evalsclaudeunicode

    Read more: I tested 3 LLMs as evaluators on an invisible unicode character · Found a weird issue with Claude Code's native eval grader over an invisible space

  10. #10 Version prompts like code with small eval setstechnique

    Treat prompts as programs: git-version them, run a 20–50 example eval set before changes, review eval diffs, and log drift.

    Prompt ops
    Treat prompt edits like code changes
    1
    Version
    Git-tag each prompt
    2
    Eval
    Run 20–50 fixed cases
    3
    Review
    Diff eval outputs
    4
    Merge
    Ship only on pass
    5
    Monitor
    Log output drift
    Drift → rollback
    Provider updates can silently change behavior — the 20–50 case eval gate and one-step rollback keep it pinned.

    Why it matters: Prompt edits and provider updates silently alter behavior; eval-backed versioning gives teams reviewability and rollback.

    How to apply: Store prompts in the repo with version tags, maintain real input and expected-output cases, run evals before merge, log outputs for drift, and keep a one-step rollback path.

    promptsevalsproduction

    Read more: How are you versioning and testing prompts in production?

  11. #11 Qwen3.8-27B tuning on a 20 GB AMD cardtip

    A tuned llama.cpp/RDNA setup runs Qwen3.8-27B IQ3_S at 60–70 tok/s short and 45–50 tok/s with long history on a 20 GB RX 7900 XT.

    Why it matters: It shows local 27B-class inference is viable on consumer AMD hardware when offload and cache settings avoid RAM spill.

    How to apply: Use an RDNA-boosted llama.cpp build with the community IQ3_S GGUF, avoid RAM spill, and tune context/cache settings against long-history workloads.

    local-llmllama.cppamd

    Read more: Qwen3.8-27B on a 20GB 7900 XT: 60-70 tok/s after two months of fiddling, here's my config

Looking for topic trends and crawl volume over time? See Trends.