privacy-redact · git:20260815.d296918 · 2026-08-15 · sha256 d1ae9fc248f2e26d

privacy-redact git:20260815.d296918A

Immutable. This exact content never changes and is served at /api/v1/blob/d1ae9fc248f2e26d.

---
description: 对外展示的 URL / token 必须脱敏,禁止把完整密钥写进界面、报错或日志
alwaysApply: true
---

# 隐私脱敏

本插件可以展示 URL、远程地址、仓库路径,但 **token、密码、Bearer、API Key 必须脱敏后再给用户或模型看**。

## 必须遵守

- 所有即将进入界面、HTTP JSON、`messageZh` / `hintZh`、工具卡片的文本,先走 `redactSecrets()`(`src/shared/redact.ts`)。
- URL 本身可以原样展示主机和路径;只遮住 userinfo 里的密码/token、查询参数里的 `token` / `access_token` / `api_key` 等、以及 `ghp_` `glpat-` `npm_` `sk-` `Bearer` 这类密钥。
- 脱敏形态:保留头 3 位和尾 2 位,中间 `***`。短于 7 位整段改成 `***`。
- 不要把未脱敏的 `git` stderr、`process.env`、`.npmrc`、远程 clone URL 直接拼进报错。
- 不要在脚本、README、提交说明、测试夹具里写入真实 token。测试只用假值。
- 不要新增会把完整密钥打到 `console` 的日志。

## 示例

```ts
// ❌ 把 git stderr 原样给用户
return new GitError('GIT_FAILED', stderr)

// ✅ 先脱敏再展示,URL 还在,token 被遮住
return new GitError('GIT_FAILED', redactSecrets(stderr))
```

`https://octocat:ghp_abcdefghijklmnopqrstuv@github.com/acme/app.git`
→ `https://octocat:ghp***uv@github.com/acme/app.git`