This release includes 1 security fix for security teams reviewing exposed deployments.
Topics
+12 more
Affected surfaces
Summary
AI summaryTrust is now one-time by default and prompt‑injection screening added at every rendering point.
Full changelog
Persistent trust, prompt-injection hardening across every model-facing surface,
and the remaining language and framework parity gaps. Trust is now one-time by
default, which removed the staleness gate that had doubled as the injection
defense, so screening moved to each point that renders committed-profile data to
the model.
Changed
- Trust is one-time by default. Once a repo is trusted it stays trusted
across refresh, re-bootstrap, and teach, and never goes stale, so you never
re-grant. SetCHAMELEON_TRUST_REVALIDATE=1to restore the old behavior where
any change to the trust-hashed profile surface re-prompts for a fresh
/chameleon-trust.
Security
- Prompt-injection screening at the read and render site. Because a profile
poisoned after you grant trust is no longer re-reviewed, every channel that
renders committed-profile data to the model now screens it: the SessionStart
block, the per-edit echo, the PreToolUse deny and PostToolUse block reasons,
and the model-facing read tools (get_idiom_coverage,get_rules,
get_status,get_archetype,get_pattern_context). Injection-prose keys and
values are dropped and tag-boundary tokens neutralized; code- and path-bearing
tools stay on tag-only screening so real symbols, signatures, and globs are not
false-dropped.apply_archetype_renamesnow sources conventions from the raw
on-disk artifact, so a legitimate value that trips the heuristic is never
erased on rename.
Added
- Language and framework parity. Closed the remaining gaps across
TypeScript, Ruby, and Python and the Django, DRF, Flask, and FastAPI framework
layers, including a framework classifier and a DRF authorization-guard lint.
Fixed
- Ruby command-injection lint anchors on double-quoted strings (single-quoted
strings do not interpolate), fixing a false positive onsystem '...#{x}...'
and the missedsystem "...'#{x}'..."shell-wrapper idiom. - Ruby insecure-deserialization lint now covers
YAML.load_file,
YAML.load_stream, andYAML.unsafe_load;safe_loadstays excluded. - Python authorization-guard lint matches PEP 695 generic class bases
(class V[T](Mixin):), so a properly-guarded generic view is no longer
flagged. ts_dumpdrops string-literal ambient module names (declare module "x")
from the enclosing class path instead of pushing the literal name.- The Python framework classifier reads dependency sections structurally
instead of matching whole-file prose, so a description that mentions a
framework no longer mis-classifies.
Breaking Changes
- Trust is one-time by default; the staleness gate that triggered re‑validation was removed. Set `CHAMELEON_TRUST_REVALIDATE=1` to restore legacy behavior.
Security Fixes
- Prompt‑injection screening implemented at all read/render sites (SessionStart block, per‑edit echo, PreToolUse/PostToolUse reasons, model‑facing tools) to drop injection‑prose keys/values and neutralize tag‑boundary tokens.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Chameleon
All releases →Beta — feedback welcome: [email protected]