Repository navigation
Move Local Runtime Credentials to the Repo-Scoped .secrets/ Convention - #227
Conversation
GOVERNANCE.md "Repo-Scoped Secrets" names the directory .secrets/, dotted, with extensionless single-value files, a tracked .example beside each, and a README.md catalog as the only other tracked file. Replace the bare secrets/ ignore with the convention's three-line pattern, add the immich_api_key placeholder and catalog, point the Trash DB debug configuration at .secrets/immich_api_key, and list the directory in OPERATIONS.md "Configuration Layout" and GOVERNANCE.md "Repository Layout". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/secrets/ in the usage examples is an example host path, not a container mount, and /run/secrets/ is a Docker secret in a compose example. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
|
A recorded local strict-review pass covers head |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A recorded local strict-review pass covers head |
There was a problem hiding this comment.
🟡 Changes recommended
A critical security gap remains because .secrets is not excluded from Docker build contexts, with an additional README ambiguity about secret paths.
1 open issue
What changed in this PR
This pull request moves local Immich runtime credentials from the legacy secrets/ path to the repo-scoped .secrets/ convention, updating configuration, ignore rules, and documentation.
Changes:
- Replaces the broad
secrets/ignore rule with standardized.secrets/patterns. - Updates the VS Code
Trash DBconfiguration to use.secrets/immich_api_key. - Adds a tracked credential example and catalog.
- Documents the new layout in
OPERATIONS.mdandGOVERNANCE.md. - Requires excluding
.secrets/from Docker build contexts and clarifying the README’s/run/secrets/reference.
This pull request requires changes.
| File | Summary |
|---|---|
OPERATIONS.md |
Documents the repo-scoped secrets directory and tracked-file policy. |
GOVERNANCE.md |
Adds .secrets/ to the repository layout. |
.vscode/launch.json |
Points the Trash DB configuration to .secrets/immich_api_key. |
.secrets/README.md |
Catalogs the local credential and requires clarification between host and container secret paths. |
.secrets/immich_api_key.example |
Provides the tracked placeholder credential file. |
.gitignore |
Ignores real .secrets/ files while allowing examples and the catalog. |
Review effort: Lite

Summary
Brings the local runtime credential directory in line with
GOVERNANCE.md"Repo-Scoped Secrets". The fleet audit does not detect this, since the directory is untracked, so the maintainer found it by reading the tree..gitignore: the baresecrets/ignore is replaced by the convention's three-line.secrets/pattern..secrets/immich_api_key.exampleand a.secrets/README.mdcatalog are tracked..vscode/launch.json"Trash DB" reads${workspaceFolder}/.secrets/immich_api_key, extensionless per the rule.OPERATIONS.md"Configuration Layout" andGOVERNANCE.md"Repository Layout" list the directory.Local step for any other checkout: move
secrets/immich_api_key.txtto.secrets/immich_api_key, then deletesecrets/. After this merges the old path is no longer ignored. The maintainer's primary checkout has already been moved.Verification
git check-ignoreconfirms a real.secrets/<name>is ignored while the.exampleand catalog stay tracked.agent-skill,frontiertier) ran two rounds. It fixed two wording errors in the catalog. It moved the legacy-path risk into the step above rather than keep a baresecrets/ignore.🤖 Generated with Claude Code