Skip to content
Fresh 🌱

1Password ​

Use credentials from your 1Password vaults for Managed Auth

Connect 1Password to automatically use credentials from your existing vaults with Managed Auth. No need to manually create credentials in Kernel, 1Password items are discovered by domain matching.

How It Works ​

  1. Connect a service account , Add your 1Password service account token in the dashboard
  2. Domain matching , When Managed Auth needs credentials, it searches your connected vaults for items matching the target domain
  3. Automatic fill , Credentials (including TOTP secrets) are used to complete authentication

INFO

Credentials are retrieved securely at authentication time. Values are never stored in Kernel, they remain in 1Password.

Setup ​

Create a 1Password Service Account ​

Create a service account in 1Password with access to the vaults containing your login credentials.

Copy the service account token (starts with `ops_`).

Connect in Kernel Dashboard ​

Go to **Integrations** in the Kernel dashboard and click **Connect 1Password**.

Give your provider a name (e.g., `my-1p`) and paste your service account token. Kernel will validate the connection and show which vaults are accessible.

You can connect multiple 1Password accounts with different names.

Use with Managed Auth ​

Reference your 1Password provider in the `credential` object. You can either specify an explicit item path or use auto-lookup by domain.

```typescript
  // Option 1: Auto-lookup by domain
  const auth = await kernel.auth.connections.create({
    domain: 'github.com',
    profile_name: 'my-github-profile',
    credential: { provider: 'my-1p', auto: true },
  });

  // Option 2: Explicit item path (VaultName/ItemName)
  const auth = await kernel.auth.connections.create({
    domain: 'github.com',
    profile_name: 'my-github-profile',
    credential: { provider: 'my-1p', path: 'Engineering/github-login' },
  });

  const login = await kernel.auth.connections.login(auth.id);
  ```

  ```python
  # Option 1: Auto-lookup by domain
  auth = await kernel.auth.connections.create(
      domain="github.com",
      profile_name="my-github-profile",
      credential={"provider": "my-1p", "auto": True},
  )

  # Option 2: Explicit item path (VaultName/ItemName)
  auth = await kernel.auth.connections.create(
      domain="github.com",
      profile_name="my-github-profile",
      credential={"provider": "my-1p", "path": "Engineering/github-login"},
  )

  login = await kernel.auth.connections.login(auth.id)
  ```

Path Format ​

When using explicit paths, specify VaultName/ItemName:

typescript
credential: { provider: 'my-1p', path: 'Engineering/github-login' }

WARNING

Vault and item names containing forward slashes (/) are not supported. Rename items in 1Password if needed.

Domain Matching ​

1Password items are matched by their website/URL field:

1Password Item URLMatches Domain
github.comgithub.com
https://github.com/logingithub.com
*.example.comapp.example.com, api.example.com

If multiple items match a domain, the first match is used. Organize your vaults to ensure the correct credentials are selected.

TOTP Support ​

If your 1Password item has a one-time password (TOTP) field configured, it will be used automatically for 2FA, no additional setup needed.

Credential Options ​

The credential object supports multiple sources:

TypeExampleDescription
Kernel credential{ name: 'my-creds' }Use a credential stored in Kernel
1Password explicit{ provider: 'my-1p', path: 'Vault/Item' }Use a specific 1Password item
1Password auto{ provider: 'my-1p', auto: true }Search 1Password by domain

If no credential is specified, the flow will wait for manual input.

Security ​

FeatureDescription
Token encryptedService account token encrypted with per-org keys
No credential storageCredentials stay in 1Password, retrieved at auth time
Vault access controlLimit access via 1Password service account permissions
Audit trail1Password logs all credential access