Files
openclaw/extensions/onepassword/openclaw.plugin.json
Peter Steinberger 6bb85f177f feat(onepassword): optional 1Password secrets broker plugin (#106133)
* feat(onepassword): add optional 1Password secrets broker plugin

Curated slug registry with per-item auto/approve/deny policy, plugin-approval
gating with expiring allow-always grants, SQLite audit history, onepassword
status/audit CLI, and a single-attempt op client (--cache=false, minimal env).

Closes #105924

* docs(plugins): refresh generated inventory count after rebase

* fix(onepassword): scope grants and field reads

* fix(onepassword): bound grant retention

* fix(onepassword): satisfy deadcode ratchet and hook allowlist contract

* fix(onepassword): honor live policy reloads

* refactor(onepassword): trim private exports

* test(onepassword): satisfy plugin boundaries

* test(onepassword): document temp directory boundary
2026-07-13 03:12:47 -07:00

96 lines
2.2 KiB
JSON

{
"id": "onepassword",
"name": "1Password",
"description": "Curated 1Password secrets broker with approval policy and SQLite audit history.",
"activation": {
"onStartup": false,
"onCommands": ["onepassword"],
"onConfigPaths": ["plugins.entries.onepassword.config"]
},
"commandAliases": [
{
"name": "onepassword",
"kind": "cli"
}
],
"contracts": {
"tools": ["onepassword"]
},
"configSchema": {
"type": "object",
"additionalProperties": false,
"required": ["vault", "items"],
"properties": {
"vault": {
"type": "string",
"minLength": 1,
"pattern": "^(?!\\s*-)"
},
"opBin": {
"type": "string",
"minLength": 1
},
"defaultPolicy": {
"type": "string",
"enum": ["auto", "approve", "deny"],
"default": "approve"
},
"cacheTtlSeconds": {
"type": "integer",
"minimum": 0,
"default": 300
},
"grantTtlHours": {
"type": "number",
"exclusiveMinimum": 0,
"default": 720
},
"opTimeoutMs": {
"type": "integer",
"minimum": 1,
"default": 15000
},
"items": {
"type": "object",
"minProperties": 1,
"maxProperties": 32,
"propertyNames": {
"pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
},
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": ["item"],
"properties": {
"item": {
"type": "string",
"minLength": 1,
"pattern": "^(?!\\s*-)"
},
"vault": {
"type": "string",
"minLength": 1,
"pattern": "^(?!\\s*-)"
},
"field": {
"type": "string",
"minLength": 1,
"pattern": "^[^,]+$",
"default": "credential"
},
"policy": {
"type": "string",
"enum": ["auto", "approve", "deny"]
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
}
}
}
}
}
}