feat: add 1Password secrets backend#35
Conversation
Adds tests for extra path defaults and normalized plans.
Clarifies how to keep auth tokens out of git while syncing config.
Mentions optional 1Password secrets backend support.
Lets the sync plan omit auth files when a 1Password backend is configured.
Adds backend pull/push hooks and blocks tracked auth files.
Exposes 1Password pull/push/status via opencode_sync.
Summary of ChangesHello @khalilgharbaoui, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces a significant security and usability enhancement to opencode-synced by providing an optional 1Password secrets backend. This feature allows users to store and manage their opencode authentication credentials and other sensitive configuration files in 1Password, rather than directly within their git repository. The implementation includes new commands for explicit secrets management, integrates secrets operations into the existing pull/push synchronization lifecycle, and enforces strict exclusion of these sensitive files from git commits when the 1Password backend is active. This change aims to improve the security posture for users handling sensitive opencode data. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a 1Password secrets backend, a significant and well-implemented feature. While the code is well-structured and considers security aspects, a medium-severity race condition was identified in how secret files are moved to their final destination, potentially exposing them to other users on the system briefly. This should be addressed by ensuring restricted permissions are applied before the files are moved to a publicly accessible directory. Additionally, there are suggestions for improving code clarity, consistency, and maintainability, such as simplifying a complex type definition, making type signatures more accurate, and refactoring duplicated logic.
🤖 Review Jules RelayI found 1 Gemini suggestion so far. Type |
Include opencode-synced.jsonc in the core plan and avoid duplicate extra paths.
|
@khalilgharbaoui Appreciate the PR and think this idea is great. Though I'd like to request some improvements before merging. Main Issues
Design Issues
Testing Gaps
Other Issues
(drafted with AI - reviewed and edited manually) |
|
Updated per review:
Tests: bun run check, bun run test. |
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces a significant new feature: a 1Password secrets backend. The implementation is comprehensive, covering configuration, validation, new commands, and deep integration into the existing sync lifecycle. The code is well-structured, with a clear separation of concerns and strong attention to security best practices, such as preventing secrets from being committed to Git, using atomic file operations, and setting restrictive file permissions. The addition of new tests for the backend logic is also a great step towards ensuring robustness. I have a couple of suggestions to simplify the error handling logic within the new secrets backend for improved clarity and maintainability, but overall, this is a high-quality and well-executed feature addition.
|
@khalilgharbaoui I made some additional adjustments, let me know if you approve.
|
Summary
Testing
Related