Rotation leaves one of them stale; guarding both old and new is
safe. Short warning fires from either form.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Raw assignment can hide a short resolved secret or read as a
reference when the exported value is the real literal.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
SECRET=$OTHER now guards the inherited value and warns from that
same value; a literal that is only a $-reference is never matched.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The 4-char sandbox password matched standalone prose tokens twice
in live use. Matching cannot cover it; rotating it can.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
URL skip now bare origins only; length floor drops to a sanity
minimum, with short values matched as standalone tokens so a 4-char
password doesn't block unrelated text (it did, in live testing).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Exact-name allowlist replaces shape-based skips; $-expansions
resolve from the inherited environment and the literal is scanned
too; only bare endpoints (no userinfo, no query) skip URL matching.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Value-based: any ~/.env.claude value in Bash/Write/Edit args blocks
with the var name, never the value. Plus literal token shapes.
Serves Claude Code and Codex. Closes#1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Merging is repo-class-scoped, not universal: personal repos merge
freely, critical prod and collaborative repos never auto-merge.
Stays in repo memories.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Never-auto-merge, rtk wrapper caveats, and ADR weight were repo-scoped
memories firing in only a few repos (issue #9). Repo copies deleted.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>