Capy vs 1Password CLI
Git-native .env workflow versus unified credential vault.
1Password is widely used among developers and has spent the last several years expanding from password management into infrastructure secrets: the SecretHub acquisition in 2021, Secrets Automation, self-hosted Connect Servers, and in March 2026 the Unified Access platform, which adds discovery, vaulting, and audit for credentials used by AI agents alongside integrations with Anthropic, Cursor, GitHub, Vercel, and Perplexity. For organizations already standardized on 1Password, the case for using op and op run as the secrets layer too is strong: one vault, one auth flow, one admin surface.
Capy and 1Password are aiming at different problems. 1Password is building a unified credential layer across humans, machines, and AI agents: a single product that holds your engineers' passwords, your service accounts' API tokens, and the credentials your AI tools use to act. Capy is built for one specific surface: the developer-and-team .env workflow, with git-aligned branches, a committable manifest, and ciphertext-only storage on the service. Both can be the right answer; the choice depends on which problem you are actually trying to solve. This comparison covers when Capy is the right 1Password CLI alternative and when it isn't.
At a glance
| Capy | 1Password CLI | |
|---|---|---|
| Where encryption happens | On the client, before any wire transit | User vaults: client-derived. Service Accounts and Connect: token-authenticated, server-mediated |
| What the service stores | Ciphertext only | Encrypted vault items; Connect Servers can cache decrypted material in your infrastructure |
| Trust model uniformity | One model across humans, CI, machines, and agents | Two models: user vault (strong) and Service Account (token-based) |
| Removing a teammate | capy kick — destroys the service-side outer wrap; no rotation needed | Revoke vault access; rotate any token-fetched material |
| Secret format | .env values plus a .keep manifest in git | Vault items referenced via op://vault/item/field |
| Secret diffs in PR review | .keep shows which keys changed without revealing values | Vault changes happen outside the repo |
| Git-branch alignment | Branches pin to your git branches | Vault items are global to a vault, not per-branch |
| AI-agent posture | Structural: limits what an agent can decrypt at any moment | Governance: discover, vault, audit (Unified Access) |
| AI-agent blast radius | Only what capy run -- is currently injecting | Whatever op is authenticated to fetch on the dev machine |
How the trust models differ
1Password's user vault uses a strong design. The encryption combines a user-chosen Master Password with a Secret Key generated on-device, and 1Password's documentation states that they cannot decrypt user vault items without both. The Secret Key never leaves the user's devices. For interactive op use from an engineer's laptop, this is closer to client-side encryption than most managed products.
The CI/CD path uses a different model. 1Password Service Accounts are token-authenticated: the account presents a token, 1Password validates it, and 1Password's infrastructure provides access to the vault items that account is permitted to read. Self-hosted Connect Servers can cache decrypted material in your infrastructure to avoid rate limits. In both cases, the trust boundary for machine workloads includes 1Password's service in a way that the user-vault model does not.
Capy's architecture is the same in every direction. Every value (whether a developer is reading it interactively, a CI runner is fetching it for a deploy, or a teammate is syncing it onto a new laptop) is encrypted on the producing client and decrypted on the consuming client. The Capy service holds ciphertext and the outer wrap of each member's key. Decryption requires the inner wrap, which lives only on the member's device. There is no separate service-account path with a different trust model.
How the workflow differs
1Password treats secrets as items in a vault. You add a value through the 1Password app or the CLI; you reference it from your code via a secret reference like op://vault/item/field; op run -- ./your-app resolves those references and injects them. The mental model is the password manager extended to env vars.
Capy treats secrets as values in a .env file. You edit the file directly; Capy encrypts each value on save and syncs the ciphertext through the service. You run your app with capy run -- ./your-app and the values land in process.env. The encrypted file itself is committable; the .keep manifest in your git repo lists hash references rather than values, so a PR diff shows which secrets changed without exposing them; branches in Capy pin to your git branches.
Neither model is universally better. The vault model centralizes everything in 1Password's product surface; the file model keeps the engineering workflow the way developers already work.
On the AI-agent question
1Password's Unified Access positions AI agent security as discover, vault, audit: find credentials sitting in plaintext .env files, vault them, audit which agent used which credential when. The strategy is governance-oriented and fits a security or platform team that wants visibility into how AI agents use credentials across the organization. The partnership posture in March 2026 (Anthropic browser extension and Claude Code, Cursor agent hooks, GitHub Actions, OpenAI IDE integrations) is a real strength.
Capy's approach is structural rather than governance-based. The architecture limits what an AI agent can decrypt at any given moment to the values currently in scope of an active capy run -- invocation; the rest of the project's .env stays as ciphertext on disk that the agent's process cannot strip alone. The comparisons overview explains the reasoning.
The two approaches are not exclusive. A team can use 1Password Unified Access to discover and audit credential usage across the organization, and use Capy for the engineering team's .env workflow specifically, much as most teams already use 1Password for human passwords regardless of what they use for .env.
When Capy is the better 1Password CLI alternative
1Password fits when one vault for humans, machines, and AI agents is the goal: when the buying decision sits with a security or IT team that wants centralized governance, and when 1Password is already standard in your organization. The integrations, audit, and partnership work they have shipped in 2026 are genuine strengths.
Capy fits when the engineering team's .env workflow is the surface you are trying to improve: when you want secrets to live as values in a .env file and a .keep manifest in git rather than as items in a vault, when ciphertext-only storage on the service is a built-in property rather than a configuration choice, and when removing a teammate should be a single command that doesn't require rotating values or revoking tokens. Teams that use both typically run Capy for the engineering workflow and 1Password for human passwords, with no overlap between the two.
Frequently asked questions
Is Capy a 1Password CLI alternative?+
Capy is the alternative for the engineering team's .env workflow specifically. 1Password is broader — humans, machines, and AI agents in one vault. Most teams that adopt Capy keep 1Password for human passwords and use Capy for the .env workflow.
Why use .env files instead of op:// references?+
Because the engineering workflow is already built around .env files: editing locally, running with the values in process.env, committing diffs to git for code review. Capy keeps that workflow and adds client-side encryption plus a .keep manifest in git so secret changes show up in PR review without exposing values.
How does Capy's trust model differ from 1Password Service Accounts?+
1Password Service Accounts are token-authenticated and 1Password's infrastructure has a path to the underlying values. Capy uses the same client-side two-party encryption for every actor — interactive developer, CI runner, or new teammate — with no service-account path that has a different trust boundary.
Can I use Capy alongside 1Password?+
Yes — that's the most common pattern. 1Password holds human passwords and credentials governed by IT; Capy holds the engineering team's .env values with client-side encryption and git-branch alignment. The two don't overlap.
More comparisons
- Capy vs DopplerClient-side encryption, git-native diffs, and cryptographic revocation versus a server-side managed product.
- Capy vs InfisicalZero-trust by default and git-branch alignment versus a server-side OSS platform.
- Capy vs dotenvxService-mediated key distribution and cryptographic revocation versus manual key distribution and rotation.
- Capy vs AWS Secrets ManagerDeveloper ergonomics, git-native diffs, and zero-trust storage versus IAM-scoped runtime delivery.
- Capy vs SOPSManaged team sync and cryptographic revocation versus a file-encryption primitive you build the system around.
Install Capy in 30 seconds
brew install capysc/tap/capynpm i -g @capy/cli