1Password UI tab for OpenClaw dashboard. Manage secrets, credential mappings, and auth state from the Control UI.
Scanned 6/7/2026
Install to Claude Code
npx -y skills add modbender/skill-library-mcp --skill 1password-ui --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of 1password Ui?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-1password-ui)More formats (shields.io, HTML) on the badges page.
---
name: 1password-ui
description: 1Password UI tab for OpenClaw dashboard. Manage secrets, credential mappings, and auth state from the Control UI.
version: 1.1.0
author: OpenClaw Community
metadata: {"clawdbot":{"emoji":"🔐","requires":{"clawdbot":">=2026.1.0"},"category":"tools"}}
---
# 1Password UI Extension
Adds a **1Password** tab to the OpenClaw Control dashboard under the **Tools** group. Browse vaults, manage credential mappings for skills, and handle authentication — all from the web UI.
## Features
| Feature | Description |
|---------|-------------|
| **Dashboard Tab** | "1Password" under Tools in sidebar |
| **Connection Status** | See signed-in account, CLI/Connect mode |
| **Sign In Flow** | Authenticate directly from the UI |
| **Docker Support** | Works with 1Password Connect for containers |
| **Credential Mappings** | Map 1Password items to skill configs |
## Agent Installation Prompt
To install this skill, give your agent this prompt:
```
Install the 1password-ui skill from ClawHub.
The skill is at: ~/clawd/skills/1password-ui/
Follow INSTALL_INSTRUCTIONS.md step by step.
Summary of changes needed:
1. Copy 1password-backend.ts to src/gateway/server-methods/1password.ts
2. Register handlers in server-methods.ts
3. Add "1password" tab to navigation.ts (TAB_GROUPS, Tab type, TAB_PATHS, icon, title, subtitle)
4. Add state variables to app.ts
5. Copy 1password-views.ts to ui/src/ui/views/1password.ts
6. Add view rendering to app-render.ts
7. Add tab loading to app-settings.ts
8. Build and restart: pnpm build && pnpm ui:build && clawdbot gateway restart
```
## Prerequisites
### For Local Installations (Ubuntu/Windows/macOS)
1. **1Password CLI** (`op`):
```bash
# macOS/Linux
brew install 1password-cli
# Or from https://1password.com/downloads/command-line/
```
2. **CLI Integration** enabled in 1Password app:
- Settings → Developer → "Integrate with 1Password CLI" ✓
### For Docker Installations
See [Docker Setup](#docker-setup-1password-connect) below.
## Usage
### Sign In
1. Open OpenClaw Dashboard → **Tools** → **1Password**
2. Click **Sign In with 1Password**
3. Authorize in the 1Password app popup (or run `op signin` in terminal)
4. Status shows "Connected" with your account
### Credential Mappings
Once signed in, you can map 1Password items to skills:
1. Skills like Pipedream can read credentials from 1Password
2. Mappings are stored in `~/clawd/config/1password-mappings.json`
3. Format: `{ "skillId": { "item": "Item Name", "vault": "Private", "fields": {...} } }`
### Example: Pipedream with 1Password
```bash
# Store Pipedream credentials in 1Password
op item create --category="API Credential" --title="Pipedream Connect" \
--vault="Private" \
"client_id[text]=your_client_id" \
"client_secret[password]=your_client_secret" \
"project_id[text]=proj_xxxxx"
# Use in token refresh
PIPEDREAM_1PASSWORD_ITEM="Pipedream Connect" python3 ~/clawd/scripts/pipedream-token-refresh.py
```
## Gateway RPC Methods
| Method | Description |
|--------|-------------|
| `1password.status` | Get CLI/Connect status, signed-in account |
| `1password.signin` | Trigger sign-in flow |
| `1password.signout` | Sign out of current session |
| `1password.vaults` | List available vaults |
| `1password.items` | List items in a vault |
| `1password.getItem` | Get item field structure (not values) |
| `1password.readSecret` | Read a secret (backend only) |
| `1password.mappings.list` | Get skill → 1Password mappings |
| `1password.mappings.set` | Create/update a mapping |
| `1password.mappings.delete` | Remove a mapping |
| `1password.mappings.test` | Test if a mapping works |
## Docker Setup (1Password Connect)
For Docker-based OpenClaw installations, use 1Password Connect instead of the CLI.
### Step 1: Deploy 1Password Connect
```yaml
# docker-compose.yml
services:
op-connect-api:
image: 1password/connect-api:latest
ports:
- "8080:8080"
volumes:
- ./1password-credentials.json:/home/opuser/.op/1password-credentials.json:ro
- op-data:/home/opuser/.op/data
op-connect-sync:
image: 1password/connect-sync:latest
volumes:
- ./1password-credentials.json:/home/opuser/.op/1password-credentials.json:ro
- op-data:/home/opuser/.op/data
volumes:
op-data:
```
### Step 2: Get Credentials
1. Go to [my.1password.com](https://my.1password.com) → Integrations → Secrets Automation
2. Create a Connect server
3. Download `1password-credentials.json`
4. Create an access token
### Step 3: Configure OpenClaw
```yaml
services:
clawdbot:
environment:
- OP_CONNECT_HOST=http://op-connect-api:8080
- OP_CONNECT_TOKEN=your-access-token
```
The UI automatically detects Connect mode.
## Files Included
```
1password-ui/
├── SKILL.md # This file
├── INSTALL_INSTRUCTIONS.md # Step-by-step installation
├── CHANGELOG.md # Version history
├── package.json # Skill metadata
├── reference/
│ ├── 1password-backend.ts # Gateway RPC handlers
│ ├── 1password-views.ts # UI view (Lit template)
│ ├── 1password-settings.ts # Tab loading logic
│ └── 1password-plugin.ts # Plugin registration (optional)
└── scripts/
└── op-helper.py # CLI/Connect bridge for skills
```
## Security Considerations
### ✅ Safe by Design
| Aspect | Implementation |
|--------|----------------|
| **Secrets not in UI** | `getItem` and `items` return field names only, never values |
| **No network installers** | No `curl \| sh` or remote scripts — all code is local |
| **Manual installation** | Requires explicit code edits, no automated patching |
| **Mapping file perms** | `1password-mappings.json` should be 0600 (contains references, not secrets) |
| **CLI auth** | Uses 1Password app integration for biometric auth when available |
### ⚠️ Documented Risks
| Risk | Mitigation |
|------|------------|
| **`readSecret` RPC available** | The `1password.readSecret` method IS exposed via gateway RPC. This is intentional — skills need to read secrets. Security relies on: (1) 1Password requiring user auth, (2) gateway access control (loopback-only by default). |
| **Gateway exposure** | All `1password.*` methods are RPC calls. If you expose your gateway to the network, protect it with authentication. |
| **Connect token** | In Docker mode, `OP_CONNECT_TOKEN` grants vault access. Keep it secure like any API key. |
### File Security
```bash
# Recommended permissions for mapping file
chmod 600 ~/clawd/config/1password-mappings.json
```
## Troubleshooting
### "1Password CLI Not Found"
```bash
brew install 1password-cli
# or download from 1password.com/downloads/command-line/
```
### "Not signed in"
```bash
op signin
op whoami # verify
```
### Sign-in fails / "authorization denied"
- Unlock the 1Password app
- Enable CLI integration: Settings → Developer → "Integrate with 1Password CLI"
### Docker: "connection refused"
```bash
docker ps | grep op-connect # check containers running
```
### Docker: "401 unauthorized"
- Verify `OP_CONNECT_TOKEN` is set correctly
- Check token hasn't expired
## Support
- **ClawHub**: [clawhub.ai/skills/1password-ui](https://clawhub.ai/skills/1password-ui)
- **1Password CLI**: [developer.1password.com/docs/cli](https://developer.1password.com/docs/cli)
- **1Password Connect**: [developer.1password.com/docs/connect](https://developer.1password.com/docs/connect)
- **OpenClaw Discord**: [discord.com/invite/clawd](https://discord.com/invite/clawd)
## Changelog
### v1.1.0 (2025-02-11)
- Full working implementation with dashboard UI
- Sign-in flow from web interface
- CLI and Connect mode support
- Credential mapping system
### v1.0.0 (2025-02-11)
- Initial release with reference implementations
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!