首页龙虾技能列表 › Manage Secrets — 环境密钥管理

Manage Secrets — 环境密钥管理

v1.0.0

通过 set-secret GitHub Actions 工作流设置或更新环境密钥。当用户请求为此 persona 更新、轮换或设置密钥/令牌/API 密钥时使用。

0· 40·0 当前·0 累计
by @aehrt55 (Xin)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/7
安全扫描
VirusTotal
可疑
查看报告
OpenClaw
可疑
high confidence
该技能的行为与其声明的用途基本一致(触发 GitHub Actions 工作流来设置密钥),但存在一些一致性和权限问题——最明显的是缺少关于所需凭据的元数据、依赖本地 CLI/系统状态未文档化,以及自主调用与可更改仓库密钥的 GitHub PAT 组合。
评估建议
该技能声明了合理的能力(触发 set-secret 工作流),但存在实现/元数据不一致和显著的权限问题。在安装或启用之前:1) 验证技能元数据已更正,列出 AGENT_GITHUB_PAT 和 MANAGE_SECRETS_GITHUB_REPO,以便了解所需条件。2) 检查目标仓库的 set-secret.yml 和任何 SOPS/解密步骤,以确认工作流的具体操作、RBAC 检查以及工作流用于解密密钥的密钥。3) 确保您提供的 PAT 是最小范围的(细粒度,仅限于特定仓库和 Actions 权限),而不是组织范围或用户管理员令牌;考虑使用具有受限权限的机器用户。4) 考虑要求人工批准或使技能可由用户调用(或禁用自主调用),以便密钥不会自动轮换/更改。5) 确认代理将调用哪些 CLI(gh、tailscale、jq、kubectl),以及您是否愿意允许代理访问本地 tailscale/k8s 状态来确定 persona。6) 首先在非生产仓库/环境中测试,并在测试后轮换 PAT。如果您无法检查工作流源代码或无法提供范围严格的 PAT,请勿启用此技能。...
详细分析 ▾
用途与能力
SKILL.md 明确要求 AGENT_GITHUB_PAT(具有 Actions 写入权限的 PAT)和 MANAGE_SECRETS_GITHUB_REPO,这对于其声明的用途是必不可少的。然而,技能的注册元数据声明没有所需的环境变量或主要凭据——这是直接的不匹配。对于密钥管理工作流来说,要求 GitHub PAT 和仓库是合理的,但元数据的遗漏是不一致的且具有误导性。
指令范围
运行时指令告诉代理运行 gh workflow/run/watch 并从本地系统状态派生 persona(tailscale status --self --json | jq...,或 Kubernetes 命名空间),这会读取 GitHub 交互之外的本地工具/状态。SKILL.md 还假设存在 gh、tailscale、jq,可能还有 kubectl,但这些二进制文件未声明。这些指令将导致代理从 AGENT_GITHUB_PAT 设置 GITHUB_TOKEN 并触发一个解密并重新加密仓库密钥并推送到 main 的工作流——行为与用途一致但副作用广泛(提交 + 部署)。
安装机制
这是一个纯指令技能(无安装规范),因此技能包本身不会向磁盘写入任何内容——安装面风险较低。然而,它依赖于外部 CLI(gh、tailscale、jq,可能还有 kubectl)的存在;这些不是由技能安装或声明的,创建了一个可能让运维人员困惑的隐藏操作依赖。
凭证需求
请求 AGENT_GITHUB_PAT(Actions 写入权限)和目标仓库对于触发 set-secret 工作流来说是相称的,但该令牌很强大:它可用于运行工作流并可能根据其范围执行其他仓库操作。技能元数据没有声明这些所需的环境变量(因此消费者可能没有意识到它们是需要的或需要什么级别的权限)。指令还读取本地状态(tailscale/k8s),这意味着对系统工具/配置有额外的隐式访问。
持久化与权限
always:false(好)但 user-invocable:false 加上 disable-model-invocation:false 意味着代理可以自主调用此技能(不是直接由用户触发)。结合对可以更改仓库密钥和触发部署的 GitHub PAT 的访问,自主调用增加了密钥可能在没有明确人工批准的情况下被更改的风险。该技能不请求持久安装权限,但其提交到 main 和触发部署的能力是高影响的副作用。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/4/7

manage-secrets 技能的初始版本:通过 set-secret GitHub Actions 工作流实现环境密钥的设置或更新。需要 `AGENT_GITHUB_PAT`(具有 Actions 写入权限的 PAT)和 `MANAGE_SECRETS_GITHUB_REPO`(目标环境仓库)。触发安全工作流以更新 SOPS 加密的 `secrets.yaml` 并自动部署更改。强制执行 RBAC,仅允许授权的 GitHub 用户管理指定 persona 的密钥。包括用于监控工作流状态和关键验证规则的指南。

● 可疑

安装命令 点击复制

官方npx clawhub@latest install manage-secrets
镜像加速npx clawhub@latest install manage-secrets --registry https://cn.clawhub-mirror.com

技能文档

Trigger the set-secret.yml workflow in the env repo to set or update an environment secret for this persona. The workflow decrypts the SOPS-encrypted secrets.yaml, injects the key/value under envSecrets, re-encrypts, and pushes the change — which triggers a deploy.

Required Environment Variables

  • AGENT_GITHUB_PAT — a fine-grained PAT with Actions write permission on the env repo. There is no fallback; the PAT must be present.
  • MANAGE_SECRETS_GITHUB_REPO — the GitHub owner/repo of the env repo that contains set-secret.yml (e.g., myorg/myapp-env).
if [[ -z "$AGENT_GITHUB_PAT" ]]; then
  echo "ERROR: AGENT_GITHUB_PAT is not set. Cannot authenticate to trigger set-secret workflow." >&2
  exit 1
fi

if [[ -z "$MANAGE_SECRETS_GITHUB_REPO" ]]; then echo "ERROR: MANAGE_SECRETS_GITHUB_REPO is not set. Cannot determine target repo." >&2 exit 1 fi

export GITHUB_TOKEN="$AGENT_GITHUB_PAT"

Trigger Set-Secret

export GITHUB_TOKEN="$AGENT_GITHUB_PAT"
gh workflow run set-secret.yml \
  --repo "$MANAGE_SECRETS_GITHUB_REPO" \
  -f persona= \
  -f secret_key= \
  -f secret_value=

Where:

  • is this agent's persona name. Determine it from the Tailscale hostname (tailscale status --self --json | jq -r .Self.HostName → strip the moltbot- prefix) or the Kubernetes namespace (moltbot-)
  • must match ^[A-Z][A-Z0-9_]$ (e.g., TELEGRAM_BOT_TOKEN, GOOGLE_API_KEY)
  • is the secret value to set

Monitor Workflow Status

After triggering, wait a few seconds then check status:

export GITHUB_TOKEN="$AGENT_GITHUB_PAT"
gh run list \
  --repo "$MANAGE_SECRETS_GITHUB_REPO" \
  --workflow set-secret.yml \
  --limit 3

To watch a specific run until completion:

export GITHUB_TOKEN="$AGENT_GITHUB_PAT"
gh run watch  \
  --repo "$MANAGE_SECRETS_GITHUB_REPO"

RBAC

The workflow enforces an RBAC matrix that maps GitHub usernames to allowed personas. Each persona's GitHub user can only set secrets for its own persona; admin users have wildcard access to all personas. Check the set-secret.yml workflow source for the current RBAC matrix.

Example RBAC structure:

{
  "admin-user": [""],
  "bot-user[bot]": ["*"],
  "persona-a-user": ["persona-a"],
  "persona-b-user": ["persona-b"]
}

Important Notes

  • The workflow runs with concurrency: { group: set-secret, cancel-in-progress: false } — concurrent dispatches are serialized, not cancelled
  • The secret key must already be a valid uppercase env var name; the workflow rejects invalid formats
  • After the workflow commits, it pushes to main, which triggers the deploy workflow for the affected persona
  • AGENT_GITHUB_PAT and MANAGE_SECRETS_GITHUB_REPO must be set in the environment; the skill has no fallback
  • If the secret value is unchanged, the workflow exits cleanly with no commit
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务