Skip to content

chore(security): stop tracking generated secrets - #26

Open
ctavolazzi wants to merge 1 commit into
mainfrom
chore/untrack-secrets
Open

chore(security): stop tracking generated secrets#26
ctavolazzi wants to merge 1 commit into
mainfrom
chore/untrack-secrets

Conversation

@ctavolazzi

Copy link
Copy Markdown
Owner

Four credential files were tracked in this public repository. All four are regenerated on demand by the code that reads them, so none needed to be tracked.

File Contents Regenerated by
.env Pexels + Pixabay API keys n/a (real keys)
.waft_api_token API bearer token api/auth.pyget_or_create_token()
_pyrite/.waft/.pyrite_secret_key Fernet key pyrite.py_generate_secret_key()
_realms/.../.hmac_key HMAC integrity key realm_state_preserver.py_generate_hmac_key()

.waft_api_token is the most serious: it is the HTTPBearer credential for the WAFT API, so anyone with a clone held a valid token for an instance running from that checkout.

Removed with git rm --cached, so all four stay on disk. .gitignore now covers each; verified with git check-ignore -v rather than assumed.

Not removed (false positives)

_realms/teleport_massive_writer/orchestration/secrets.md is a story bible. _pantheon/the_dealer/truth/keys.json is game state. Both matched on filename only.

Follow-up required — this PR does not un-publish anything

  • Rotate the Pexels and Pixabay keys (public since 2026-01-19)
  • Delete .waft_api_token locally to force a fresh token
  • Keep .pyrite_secret_key locally — deleting orphans existing encrypted secrets
  • Keep .hmac_key locally — deleting invalidates existing crystallized realm state

🤖 Generated with Claude Code

Four credential files were committed to this public repository. All four
are regenerated on demand by the code that reads them, so none of them
ever needed to be tracked.

  .env                                          Pexels + Pixabay API keys
  .waft_api_token                               API bearer token
  _pyrite/.waft/.pyrite_secret_key              Fernet key
  _realms/.../crystallized_state/.hmac_key      HMAC integrity key

Regeneration points:
  src/waft/api/auth.py                          get_or_create_token()
  src/waft/pyrite.py                            _generate_secret_key()
  core/dnd_scenario/realm_state_preserver.py    _generate_hmac_key()

.waft_api_token is the most serious of the four: it is the HTTPBearer
credential for the WAFT API, so anyone with a clone held a valid token
for an instance running from that checkout.

Removed with `git rm --cached`, so all four remain on disk. .gitignore
now covers each one; verified with `git check-ignore -v`.

This stops the bleeding going forward. It does NOT invalidate values
already published, so the Pexels and Pixabay keys still require rotation
and .waft_api_token should be deleted locally to force a fresh token.
The two crypto keys must be KEPT locally: deleting .pyrite_secret_key
orphans existing encrypted secrets, and deleting .hmac_key invalidates
existing crystallized realm state.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant