Security & privacy
API Key Storage (Secure):
- Primary: OS keychain via
keytar(macOS Keychain, Windows Credential Vault, Linux Secret Service). - Fallback: AES-256-CBC encryption in
~/.gitgenie/config.json. - Encryption format:
<random-iv>:<ciphertext>with unique per-user key. - Keys never leave your machine and are never hardcoded in source.
Data Privacy:
- Only staged diff is sent to Gemini AI (added/removed lines & file headers).
- No untracked files, personal data, or full repository content is transmitted.
- Avoid staging secrets; keep
.envfiles in.gitignore.
Contributing / roadmap
Planned: PR automation, partial diff selection, stats mode, model selection flag.
Contribute: fork → branch → changes → gg "feat xyz" --genie → PR.
FAQ
Q: How do I rotate API keys? A: Just run gg config <new_key> to overwrite the existing one.
Q: What if I hit quota on my API key? A: Swap to another key using gg config <backup_key>.
Q: Is key storage secure? A: Yes—uses OS keychain when available, fallback to AES-256-CBC encryption with per-user keys.
Q: Windows support? A: Yes (PowerShell tested), uses Windows Credential Vault for secure storage.
Q: Can it open PRs? A: Not yet (roadmap), but generates PR titles for manual creation.
Q: Model configurable? A: Currently fixed to gemini-2.0-flash.
Q: How does --osc work? A: Prompts for issue number, creates branch type/#<issue_number>-shorttitle (short title from Gemini if --genie is used, otherwise from your message).
Publish (maintainers)
npm version patch # or minor / major npm publish --access public
Support
- GitHub: https://github.com/gunjanghate/GitGenie
- Issues: https://github.com/gunjanghate/GitGenie/issues
- NPM: https://www.npmjs.com/package/@gunjanghate/git-genie
- X / Twitter: @gunjanghate11