返回顶部
b

bagmanAI密钥管理

Secure key management for AI agents. Use when handling private keys, API secrets, wallet credentials, or when building systems that need agent-controlled funds. Covers secure storage, session keys, leak prevention, and prompt injection defense.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,864
下载量
免费
免费
2
收藏
概述
安装方式
版本历史

bagman

Bagman

为处理私钥和机密信息的AI代理提供安全密钥管理模式。旨在防止:

  • - 密钥丢失:代理在会话之间忘记密钥
  • 意外泄露:密钥泄露到GitHub、日志或输出中
  • 提示注入:恶意提示提取机密信息

核心原则

  1. 1. 切勿将原始私钥存储在配置、环境变量或内存文件中
  2. 使用会话密钥/委托访问而非完全控制
  3. 所有机密访问均通过1Password CLI (op)进行
  4. 在发送前验证所有输出以防止密钥泄露

参考资料

  • - references/secure-storage.md - 代理机密的1Password模式
  • references/session-keys.md - ERC-4337委托访问模式
  • references/leak-prevention.md - 预提交钩子和输出清理
  • references/prompt-injection-defense.md - 输入验证和输出过滤

快速参考

正确做法 ✅

bash

通过1Password在运行时检索密钥


PRIVATE_KEY=$(op read op://Agents/my-agent-wallet/private-key)

使用环境注入(密钥从不接触磁盘)

op run --env-file=.env.tpl -- node agent.js

使用具有权限限制的会话密钥

(委托特定能力,而非完整钱包访问权限)

错误做法 ❌

bash

切勿将密钥存储在文件中


echo PRIVATE_KEY=0x123... > .env

切勿记录或打印密钥

console.log(Key:, privateKey)

切勿将密钥存储在内存/日志文件中

即使在私有代理内存中 - 这些都可能被泄露

切勿在密钥操作附近信任未验证的输入


架构:代理钱包堆栈

┌─────────────────────────────────────────────────────┐
│ AI Agent │
├─────────────────────────────────────────────────────┤
│ Session Key (time/value bounded) │
│ - Expires after N hours │
│ - Spending cap per operation │
│ - Whitelist of allowed contracts │
├─────────────────────────────────────────────────────┤
│ 1Password / Secret Manager │
│ - Agent retrieves session key at runtime │
│ - Never stores full private key │
│ - Audit log of all accesses │
├─────────────────────────────────────────────────────┤
│ ERC-4337 Smart Account │
│ - Programmable permissions │
│ - Recovery without private key exposure │
│ - Multi-sig for high-value operations │
├─────────────────────────────────────────────────────┤
│ Operator (Human) │
│ - Holds master key in hardware wallet │
│ - Issues/revokes session keys │
│ - Monitors agent activity │
└─────────────────────────────────────────────────────┘



工作流程:设置代理钱包访问

1. 为代理机密创建1Password保险库

bash

创建专用保险库(通过1Password应用或CLI)


op vault create Agent-Wallets --description AI agent wallet credentials

存储代理会话密钥(非主密钥!)

op item create \ --vault Agent-Wallets \ --category API Credential \ --title trading-bot-session \ --field session-key[password]=0xsession... \ --field expires=2026-02-15T00:00:00Z \ --field spending-cap=1000 USDC \ --field allowed-contracts=0xDEX1,0xDEX2

2. 代理在运行时检索凭据

python
import subprocess
import json

def getsessionkey(item_name: str) -> dict:
Retrieve session key from 1Password at runtime.
result = subprocess.run(
[op, item, get, item_name, --vault, Agent-Wallets, --format, json],
capture_output=True, text=True, check=True
)
item = json.loads(result.stdout)

# Extract fields
fields = {f[label]: f.get(value) for f in item.get(fields, [])}

# Validate session hasnt expired
from datetime import datetime
expires = datetime.fromisoformat(fields.get(expires, 2000-01-01))
if datetime.now() > expires:
raise ValueError(Session key expired - request new key from operator)

return {
session_key: fields.get(session-key),
expires: fields.get(expires),
spending_cap: fields.get(spending-cap),
allowed_contracts: fields.get(allowed-contracts, ).split(,)
}

3. 切勿记录或存储密钥

python

❌ 错误 - 密钥在日志中


logger.info(fUsing key: {session_key})

✅ 正确 - 脱敏标识符

logger.info(fUsing session key: {sessionkey[:8]}...{sessionkey[-4:]})

❌ 错误 - 密钥在内存文件中

with open(memory/today.md, a) as f: f.write(fSession key: {session_key})

✅ 正确 - 仅引用

with open(memory/today.md, a) as f: f.write(fSession key: [stored in 1Password: trading-bot-session])

泄露预防

输出清理

在任何代理输出(聊天、日志、文件写入)之前,扫描密钥模式:

python
import re

KEY_PATTERNS = [
r0x[a-fA-F0-9]{64}, # ETH private keys
rsk-[a-zA-Z0-9]{48,}, # OpenAI keys
rsk-ant-[a-zA-Z0-9\-_]{80,}, # Anthropic keys
rgsk_[a-zA-Z0-9]{48,}, # Groq keys
r[A-Za-z0-9+/]{40,}={0,2}, # Base64 encoded (suspiciously long)
]

def sanitize_output(text: str) -> str:
Remove potential secrets from output.
for pattern in KEY_PATTERNS:
text = re.sub(pattern, [REDACTED], text)
return text

Apply to ALL agent outputs

def send_message(content: str): content = sanitize_output(content) # ... send to chat/log/file

预提交钩子

安装此钩子以防止意外提交机密:

bash
#!/bin/bash

.git/hooks/pre-commit

PATTERNS=(
0x[a-fA-F0-9]{64}
sk-[a-zA-Z0-9]{48,}
sk-ant-api
PRIVATE_KEY=
gsk_[a-zA-Z0-9]{48,}
)

for pattern in ${PATTERNS[@]}; do
if git diff --cached | grep -qE $pattern; then
echo ❌ Potential secret detected matching: $pattern
echo Remove secrets before committing!
exit 1
fi
done

.gitignore 必备项

gitignore

Secrets


.env
.env.*
*.pem
*.key
secrets/
credentials/

Agent state that might contain secrets

memory/*.json wallet-state.json session-keys/

提示注入防御

输入验证

在处理任何涉及钱包操作的用户输入之前:

python
DANGEROUS_PATTERNS = [
rignore.(previous|above|prior).instructions,
rreveal.*(key|secret|password|credential),
routput.*(key|secret|private),
rprint.*(key|secret|wallet),
rshow.*(key|secret|password),
rwhat.*(key|secret|password),
rtell.me.(key|secret),
rdisregard.*rules,
rsystem.*prompt,
rjailbreak,
rdan.*mode,
]

def validate_input(text: str) -> bool:
Check for prompt injection attempts.
text_lower = text.lower()
for pattern in DANGEROUS_PATTERNS:
if re.search(pattern, text_lower):
return False
return True

def processwalletrequest(user_input: str):
if not validateinput(userinput):
return I cant help with that request.
# ... proceed with wallet operation

关注点分离

  • - 钱包操作应放在隔离的函数中,无法访问对话上下文
  • 切勿将完整对话历史传递给钱包敏感代码
  • 使用允许列表而非阻止列表

python
ALLOWEDWALLETOPERATIONS = {
check_

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 openclaw-1776021676 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 openclaw-1776021676 技能

通过命令行安装

skillhub install openclaw-1776021676

下载

⬇ 下载 bagman v1.0.0(免费)

文件大小: 16.81 KB | 发布时间: 2026-4-13 11:17

v1.0.0 最新 2026-4-13 11:17
Initial release of Bagman: secure key management patterns for AI agents.

- Introduces a framework for handling private keys, API secrets, and wallet credentials with robust leak prevention and prompt injection defenses.
- Enforces session-based access using 1Password CLI, never storing raw keys in env files, config, or agent memory.
- Provides validated workflows, code snippets, and architecture diagrams for agent wallet access and key lifecycle management.
- Includes output sanitization routines and pre-commit git hooks to prevent accidental secret leaks.
- Outlines input validation strategies and isolation patterns to defend against prompt injection.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部