feat(secrets): project-keys wizard for P7, and per-project age keygen #144
Loading…
Reference in a new issue
No description provided.
Delete branch "jfraeys/feat/project-keys-wizard"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
P7's remaining work (#118) is the keys, which only the operator can hold. This is the guided path.
scripts/project-keys-wizard.sh [project] [repo-path](defaultforge-agent): preflight; operator key -> Keychainsops-age/<project>; recovery key -> personal Bitwardensops-age-recovery-<project>; offline copy of the recovery key (path you choose, 0600, verified, never printed); fills the two.sops.yamlplaceholders; encryptssecrets/dev.sops.ymlfrom the local.envusing the names in.env.example(python ->sops encrypt --filename-overrideon a pipe, so values are never printed or written unencrypted); runssops exec-env ... go run ./dev integration; runs the isolation drill with the real keys both ways (forge-agent operator/recovery cannot decrypt infra's vault; infra operator/recovery cannot decryptdev.sops.yml); writesdocs/secrets-recovery.mdin the project with the public keys.age-operator-keygen.sh/age-recovery-keygen.shtake an optional project name; defaultinfra, so nothing existing changes.Checked:
bash -n; the.env->sops encryptpipe tested with throwaway keys and fake values (both recipients decrypt; values with:,#and spaces survive). Not run end to end: it needs Keychain, Bitwarden and the scratch forge.Run:
scripts/project-keys-wizard.sh forge-agent🤖 Generated with Claude Code
https://claude.ai/code/session_01Ge5tovcwdEUBtPwUktsZZZ