secrets-management
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSecrets Management
Secret 管理
application / serviceのsecret管理を、人間・agent・CI/CDが同じauthority modelで扱えるようにする。
current default providerはInfisicalで、current default control planeはself-hosted だが、目的はprovider adoptionそのものではない。守るべき性質は、secret valueのcanonical authority、least privilege、plaintext persistence回避、schema discoverability、recoverability、agent-safe evidenceである。
https://secrets.rebuildup.dev原則:
Secret values live in the secret provider. Secret contracts live in the repository. Access is identity-scoped and injected only where needed.
使 application / service 的 Secret 管理能够由人员、agent、CI/CD 在同一 authority model 下处理。
current default provider 为 Infisical,current default control plane 为 self-hosted ,但目标并非 provider adoption 本身。需要守住的性质包括:Secret 值的 canonical authority、least privilege、避免明文持久化、schema 可发现性、可恢复性以及 agent-safe evidence。
https://secrets.rebuildup.dev原则:
Secret 值存放在 Secret provider 中。Secret contract 存放在 repository 中。访问权限按身份限定,并仅在必要位置注入。
1. Responsibility boundary
1. 责任边界
このSkillが所有する:
- application / service env secretのSoT設計
- Infisical project / environment / path構成
- repository-controlled env schemaとの分離
- local CLI workflow
- Machine Identity / human identityの責務分離
- GitHub Actions OIDC integration
- agent / workerへのsecret capability付与
- plaintext / GitHub Secrets / SOPS等からのmigration
.env - secret-safe validation / evidence
- provider unavailable時のdeviation評価
このSkillが所有しない:
- application固有のcredential発行元でのrotation semantics
- cloud IAM全体のarchitecture
- vulnerability hunting全般
- production secret値そのもののレビュー
- security/privacy risk acceptance
接続先:
- unknown secret-handling vulnerability ->
security-audit - GitHub workflow / delivery ->
github-delivery - worker isolation / credential injection boundary ->
sandbox-runtime - runtime validation ->
quality-gate - provider selection deviation / security-cost decision ->
engineering-decisions - durable recovery ->
agent-recovery
本 Skill 负责:
- application / service 环境 Secret 的 SoT 设计
- Infisical project / environment / path 结构
- 与 repository-controlled env schema 的分离
- local CLI workflow
- Machine Identity / human identity 的职责分离
- GitHub Actions OIDC integration
- 向 agent / worker 授予 Secret capability
- 从 plaintext / GitHub Secrets / SOPS 等迁移
.env - Secret-safe validation / evidence
- provider unavailable 时的 deviation 评估
本 Skill 不负责:
- application 特有 credential issuer 的 rotation semantics
- 整体 cloud IAM architecture
- 通用 vulnerability hunting
- production Secret 值本身的审查
- security / privacy risk acceptance
连接目标:
- 未知的 secret-handling vulnerability ->
security-audit - GitHub workflow / delivery ->
github-delivery - worker isolation / credential injection boundary ->
sandbox-runtime - runtime validation ->
quality-gate - provider selection deviation / security-cost decision ->
engineering-decisions - durable recovery ->
agent-recovery
2. Canonical authority split
2. Canonical authority 拆分
secret valueとenvironment contractを同じSoTへ押し込まない。
不要将 Secret 值和 environment contract 强制放入同一个 SoT。
Secret value
Secret value
current application/service default:
text
Infisical (current default: https://secrets.rebuildup.dev)
└─ project
├─ dev
├─ staging
└─ prodInfisical側がcanonical value authorityを持つ。
current application/service default:
text
Infisical (current default: https://secrets.rebuildup.dev)
└─ project
├─ dev
├─ staging
└─ prodInfisical 侧拥有 canonical value authority。
Secret contract
Secret contract
repository側が次をcanonicalに持つ。
- key name
- required / optional
- type / shape
- non-secret default
- environment applicability
- owning component
- validation rule
- description that does not reveal the value
project stackに応じてtyped env schema、config schema、、generated metadata等を使用する。
.env.example.env.examplefresh agentがInfisicalのsecret valueを読むことなく、必要keyとvalidation contractを理解できる状態を維持する。
repository 侧对以下内容拥有 canonical authority:
- key name
- 必填 / 可选
- type / shape
- non-secret default
- environment applicability
- owning component
- validation rule
- 不暴露具体值的 description
根据 project stack,使用 typed env schema、config schema、、generated metadata 等。
.env.example使用 时,不得放入 real Secret,只能放置 placeholder / empty value / non-secret default。
.env.example应确保 fresh agent 无需读取 Infisical 中的 Secret 值,也能理解所需 key 和 validation contract。
3. When Infisical is the default
3. Infisical 何时作为 default
次を満たすapplication / serviceではInfisicalをdefaultとする。
- runtimeがenvironment secretを必要とする
- developer / CI / deployment等、複数principalからaccessする可能性がある
- secret valueをGit historyへ置く必要がない
- online secret providerへ到達できる
次はautomatic adoption対象にしない。
- NixOS / dotfiles / bootstrap等でencrypted secret-in-Gitがexplicit requirement
- offline-first runtime
- provider-native storeだけを使う明確なplatform requirement
- regulation / hosting / network constraintでInfisicalを利用できない
deviationはprovider名ではなく、同等以上のguaranteeで評価する。
对于满足以下条件的 application / service,将 Infisical 作为 default。
- runtime 需要 environment Secret
- developer / CI / deployment 等多个 principal 可能需要访问
- 无需将 Secret 值放入 Git history
- 可以访问 online Secret provider
以下情况不作为 automatic adoption 对象。
- NixOS / dotfiles / bootstrap 等明确要求 encrypted secret-in-Git
- offline-first runtime
- 有明确的 platform requirement,仅使用 provider-native store
- 因 regulation / hosting / network constraint 无法使用 Infisical
评估 deviation 时不看 provider 名称,而应评估是否具备同等或更强的 guarantee。
4. Initialization / reconciliation
4. 初始化 / 状态协调
初期化時は作成前にcurrent stateを調査する。
確認:
- env schema / validation source
- /
.env/ secret-like config.env.* .gitignore- GitHub Actions secrets / variablesへの依存
- existing secret manager / SOPS / cloud secret store
- runtime / deploy environment
- CI jobs that actually require secret access
- developer bootstrap path
- repository visibility and agent/runtime trust boundaries
desired state:
text
repository
├─ source
├─ env schema / non-secret metadata
├─ provider pointer/config
│ ├─ site/API endpoint
│ ├─ project ID
│ └─ environment/path mapping
└─ no canonical plaintext secret
Infisical
└─ canonical secret values
human / agent / CI
└─ scoped identity
└─ runtime injectionidempotentに:
initialize if missing -> repair if incomplete -> update if stale -> verify if already correctを適用する。
初始化时,在创建之前先调查 current state。
检查:
- env schema / validation source
- /
.env/ 类似 Secret 的 config.env.* .gitignore- 对 GitHub Actions secrets / variables 的依赖
- 现有 secret manager / SOPS / cloud secret store
- runtime / deploy environment
- 实际需要 Secret 访问权限的 CI jobs
- developer bootstrap path
- repository visibility 和 agent/runtime trust boundaries
desired state:
text
repository
├─ source
├─ env schema / non-secret metadata
├─ provider pointer/config
│ ├─ site/API endpoint
│ ├─ project ID
│ └─ environment/path mapping
└─ no canonical plaintext secret
Infisical
└─ canonical secret values
human / agent / CI
└─ scoped identity
└─ runtime injection幂等地应用:
initialize if missing -> repair if incomplete -> update if stale -> verify if already correct5. CLI-first human workflow
5. CLI-first 人员工作流
Web UIをnormal workflowの必須surfaceにしない。
current default instance:
text
site: https://secrets.rebuildup.dev
api: https://secrets.rebuildup.dev/api標準bootstrap:
bash
export INFISICAL_API_URL=https://secrets.rebuildup.dev/api
infisical login --domain=https://secrets.rebuildup.dev
infisical initただしtracked project bindingが既に存在するrepositoryでは をfresh setupのたびに再実行しない。existing bindingを検証し、欠落・stale時だけreconcileする。
infisical initprovider pointer/configにsecret valueを含めないことを確認し、current defaultで使用するsite/API URL、project ID、environment/path mapping等のsafe metadataをrepositoryからdiscoverableにする。
wrapper / task / CIはcurrent provider endpointを明示し、Infisical CLIのvendor default endpointへ暗黙fallbackさせない。current default profileでmanaged Cloudへ意図せず接続するのはconfiguration driftとして扱う。
通常実行:
bash
INFISICAL_API_URL=https://secrets.rebuildup.dev/api \
infisical run --env=dev --path=/backend -- <command>projectにstable local command interfaceがある場合は、provider-specific invocationを薄く包んでよい。
例:
text
env:run <command>
env:check
env:schemawrapperはsecret valueをprint/exportせず、underlying provider failureを隠さない。
Web UIはinspection / emergency administration / onboarding / access review等に使用できるが、agentや通常developer taskの必須stepとして文書化しない。
不要将 Web UI 作为 normal workflow 的必需 surface。
current default instance:
text
site: https://secrets.rebuildup.dev
api: https://secrets.rebuildup.dev/api标准 bootstrap:
bash
export INFISICAL_API_URL=https://secrets.rebuildup.dev/api
infisical login --domain=https://secrets.rebuildup.dev
infisical init但是,对于已存在 tracked project binding 的 repository,不要在每次 fresh setup 时重新执行 。应验证 existing binding,仅在缺失或 stale 时进行 reconcile。
infisical init确认 provider pointer/config 不包含 Secret 值,并确保 current default 使用的 site/API URL、project ID、environment/path mapping 等 safe metadata 可从 repository 中发现。
wrapper / task / CI 应明确指定 current provider endpoint,不得隐式 fallback 到 Infisical CLI 的 vendor default endpoint。将 current default profile 意外连接到 managed Cloud 视为 configuration drift。
常规执行:
bash
INFISICAL_API_URL=https://secrets.rebuildup.dev/api \
infisical run --env=dev --path=/backend -- <command>如果 project 存在 stable local command interface,可以对 provider-specific invocation 进行轻量封装。
示例:
text
env:run <command>
env:check
env:schemawrapper 不得 print/export Secret 值,也不得隐藏 underlying provider failure。
Web UI 可用于 inspection / emergency administration / onboarding / access review 等,但不应将 agent 或常规 developer task 记录为必须经过 Web UI 的步骤。
Control-plane automation
Control-plane automation
project / environment / path / Machine Identity / permission / OIDC trust等も、可能な範囲でheadlessにreconcileできるようにする。
優先順位:
- Infisical CLIで安全に操作できるsurface
- official API
- Terraform / OpenTofu等のofficial provider
- Web UIはbootstrap / inspection / emergency fallback
control-plane configurationをIaCへ置く場合、repositoryにはproject ID、identity ID、environment/path、role/policy等のnon-secret stateだけを置く。secret valueやlong-lived auth credentialをTerraform/OpenTofu stateへpersistさせない。provider capabilityがtime-sensitiveな場合はcurrent official documentationを確認する。
Web UIでしか行えなかった操作がある場合も、その事実と必要なresultをdurable documentationへ残し、画面操作そのものを唯一のrecoverability sourceにしない。
project / environment / path / Machine Identity / permission / OIDC trust 等也应尽可能通过 headless 方式进行 reconcile。
优先级:
- 可通过 Infisical CLI 安全操作的 surface
- official API
- Terraform / OpenTofu 等 official provider
- Web UI 仅作为 bootstrap / inspection / emergency fallback
将 control-plane configuration 放入 IaC 时,repository 中只应存放 project ID、identity ID、environment/path、role/policy 等 non-secret state。不得将 Secret 值或 long-lived auth credential 持久化到 Terraform/OpenTofu state 中。如果 provider capability 具有时效性,应查阅 current official documentation。
即使某些操作只能通过 Web UI 完成,也应将这一事实和必要结果记录在 durable documentation 中,不能将界面操作本身作为唯一的 recoverability source。
6. Plaintext materialization
6. 明文实体化
runtime injectionを優先する。
平文やexport fileがtool compatibility上必要な場合だけmaterializeする。
.env必須条件:
- Git対象外
- pathが明示的にgitignored
- lifecycleがtask/runtimeにbounded
- file permissionを可能な範囲で絞る
- logs / Issue / PR / checkpointへvalueを出さない
- 不要になったcopyを残さない
plain をcanonical storeやonboarding distribution artifactとして扱わない。
.env优先采用 runtime injection。
仅当 tool compatibility 确实需要时,才实体化明文 或 export file。
.env必须满足以下条件:
- 不属于 Git 目标范围
- path 已明确加入 gitignore
- lifecycle 限定在 task/runtime 范围内
- 尽可能收紧 file permission
- 不向 logs / Issue / PR / checkpoint 输出值
- 不保留不再需要的 copy
不要将 plain 视为 canonical store 或 onboarding distribution artifact。
.env7. Agent / worker access
7. Agent / worker 访问
agentへ「Infisicalを使える」ことと「全secretを読める」ことを同義にしない。
default:
- Coordinator / reviewer: secret accessなし
- implementation worker: secret accessなし
- local integrationで必要なworker: dev/testの必要pathだけread
- deployment worker: target environmentの必要pathだけread
- secret maintenance actor: explicit write scopeだけ
Machine Identity / temporary identityは最低限次でscopeする。
- project
- environment
- path
- action
- secret name/tag when practical
- lifetime / auth context when supported
Supervisorはhost userのbroad credentialをsandboxへ無条件inheritさせない。
secret accessが必要なら、そのworker capabilityとして明示的に付与する。
不要将“agent 可以使用 Infisical”与“agent 可以读取所有 Secret”视为同义。
default:
- Coordinator / reviewer: 无 Secret access
- implementation worker: 无 Secret access
- local integration 所需的 worker: 只读 dev/test 的必要 path
- deployment worker: 只读 target environment 的必要 path
- secret maintenance actor: 仅具有 explicit write scope
Machine Identity / temporary identity 至少应按以下维度限定 scope。
- project
- environment
- path
- action
- 可行时限定 secret name/tag
- 支持时限定 lifetime / auth context
Supervisor 不得将 host user 的 broad credential 无条件继承到 sandbox 中。
如需 Secret access,应将其明确授予对应的 worker capability。
Forbidden agent behavior
禁止的 agent 行为
- 等でenvironment全体をdumpする
env - secret list取得を目的なく行う
- valueをchat / checkpoint / artifactへ転写する
- debugging目的でsecret valueをlogへ出す
- broader identityへ切り替えてpermission errorを回避する
permission不足はsecurity boundaryとして扱い、必要scopeを特定してから変更する。
- 通过 等命令 dump 整个 environment
env - 无目的地获取 Secret list
- 将值转写到 chat / checkpoint / artifact
- 以 debugging 为目的将 Secret 值写入 log
- 切换到权限更广的 identity 来规避 permission error
将权限不足视为 security boundary,确定所需 scope 后再进行变更。
8. GitHub Actions
8. GitHub Actions
GitHub ActionsからInfisicalへaccessする場合、current platformが対応していればOIDC + Machine Identityをdefaultとする。current default profileではidentity/control planeを 側へ統一する。
https://secrets.rebuildup.devdesired trust chain:
text
GitHub Actions job
↓ short-lived OIDC token
Infisical Machine Identity
↓ scoped authorization
required environment/path secrets標準:
- GitHubにlong-lived Infisical master credentialを保存しない
- workflowは必要なjobだけ
id-token: write - 等、他permissionも最小化
contents: read - OIDC issuer / subject / audience / repository / environment等をcurrent official contractに従ってrestrict
- generic lint/test jobへproduction secretを渡さない
- production accessはdeployment/release boundaryへ限定
- identity ID / project slug等のnon-secret identifierはsecretとして扱わない
- OIDCをworkflow source protectionの代替にしない
- secret-bearing workflowはtrusted branch / protected environment / applicable review boundaryからだけ実行する
- untrusted PR codeをsecret取得後に実行しない。特に 等、base-contextのcredentialとuntrusted head codeを混在させるtriggerは明示的にsecurity reviewする
pull_request_target
OIDC非対応runtimeではUniversal Auth等をfallbackとして使用できるが、static credentialは最小scope、rotation可能、long-lived master keyではないものにする。
GitHub Actions / Infisical OIDCのclaim形式やofficial action syntaxはtime-sensitiveである。実装時にcurrent official documentationを確認し、古いexampleをblind copyしない。
从 GitHub Actions 访问 Infisical 时,如果 current platform 支持,应将 OIDC + Machine Identity 作为 default。在 current default profile 下,应将 identity/control plane 统一到 。
https://secrets.rebuildup.devdesired trust chain:
text
GitHub Actions job
↓ short-lived OIDC token
Infisical Machine Identity
↓ scoped authorization
required environment/path secrets标准:
- 不在 GitHub 中保存 long-lived Infisical master credential
- 仅对必要的 job 授予
id-token: write - 同样将 等其他 permission 最小化
contents: read - 按 current official contract 限制 OIDC issuer / subject / audience / repository / environment 等
- 不向 generic lint/test job 传入 production Secret
- 将 production access 限定在 deployment/release boundary
- 不将 identity ID / project slug 等 non-secret identifier 视为 Secret
- 不将 OIDC 作为 workflow source protection 的替代方案
- 仅允许包含 Secret 的 workflow 从 trusted branch / protected environment / applicable review boundary 执行
- 获取 Secret 后不得执行 untrusted PR code。尤其是 等将 base-context credential 与 untrusted head code 混合的 trigger,必须明确进行 security review
pull_request_target
在 OIDC 不受支持的 runtime 中,可以使用 Universal Auth 等作为 fallback,但 static credential 必须具有最小 scope、可轮换,且不能是 long-lived master key。
GitHub Actions / Infisical OIDC 的 claim 格式和 official action syntax 具有时效性。实现时应查阅 current official documentation,不要盲目复制旧示例。
9. Environment / path model
9. Environment / path 模型
環境はproject実態へ合わせる。
標準候補:
text
dev
staging
prodpathはdeployment/component boundaryを表現する。
例:
text
/shared
/web
/backend
/worker
/deployすべてのprojectへ固定pathを強制しない。
同じsecretを無秩序に複製するより、ownershipとconsumer boundaryを明確にする。
prod credentialをdevへcopyして動作確認することを標準化しない。
根据 project 的实际情况调整 environment。
标准候选项:
text
dev
staging
prodpath 用于表示 deployment/component boundary。
示例:
text
/shared
/web
/backend
/worker
/deploy不要对所有 project 强制使用固定 path。
相比无序复制相同 Secret,更应明确 ownership 和 consumer boundary。
不要将复制 prod credential 到 dev 进行行为验证标准化。
10. Schema and drift verification
10. Schema 与 drift 验证
secret valueを取得せずに可能な検証を優先する。
最低限:
- required keyがschemaに定義されている
- provider上に必要keyが存在する
- unknown/stale keyを検出できる
- environment/path mappingがconsumerと一致する
- required secretがgeneric CIへ露出していない
- application startup時のenv validationがある場合は実行する
evidenceにはvalueではなく次を使用する。
- key name
- presence / absence
- schema validation result
- environment/path
- identity scope
- exit code
- redacted/hash fingerprint when truly necessary
hashもsmall-domain secretの推測材料になり得るため、必要性がない場合は記録しない。
优先执行无需获取 Secret 值即可完成的验证。
最低要求:
- required key 已在 schema 中定义
- provider 上存在所需 key
- 能够检测 unknown/stale key
- environment/path mapping 与 consumer 一致
- required Secret 未暴露给 generic CI
- 如果 application startup 时包含 env validation,则执行验证
evidence 应使用以下信息,而不是具体值:
- key name
- presence / absence
- schema validation result
- environment/path
- identity scope
- exit code
- 确有必要时使用 redacted/hash fingerprint
Hash 也可能成为 small-domain Secret 的推测依据,因此没有必要时不要记录。
11. Secret mutation
11. Secret mutation
secretの作成・変更・削除はconsequential external mutationとして扱う。
変更前:
- target project / environment / path / key identityを確認
- consumerとrollback pathを確認
- write authorityを確認
変更後:
- valueを表示せずpresence / version / consumer behaviorを検証
- dependent runtimeをcurrent valueで再検証
- duplicate old storeが不要なら削除
- rotationが必要ならcredential issuer側も含めて完了を確認
secret valueのPR reviewは行わない。review可能なartifactはschema、scope、consumer change、identity policy、validation evidenceである。
将 Secret 的创建、修改和删除视为 consequential external mutation。
变更前:
- 确认 target project / environment / path / key identity
- 确认 consumer 和 rollback path
- 确认 write authority
变更后:
- 不显示值,改为验证 presence / version / consumer behavior
- 使用 current value 重新验证 dependent runtime
- 如果 duplicate old store 已无必要,则将其删除
- 如果需要 rotation,还需确认 credential issuer 侧的操作已完成
不要对 Secret 值进行 PR review。可审查的 artifact 包括 schema、scope、consumer change、identity policy 和 validation evidence。
12. Migration
12. 迁移
Plaintext .env -> Infisical
Plaintext .env -> Infisical
- schema/keyをrepository側で確定
- valuesをInfisicalへ安全にimport
- runtimeを等へ切り替え
infisical run - current runtimeを検証
- plaintext fileをcanonical workflowから除去
- historical exposureが疑われるvalueはrotate
- 在 repository 侧确定 schema/key
- 将 values 安全 import 到 Infisical
- 将 runtime 切换到 等方式
infisical run - 验证 current runtime
- 从 canonical workflow 中移除 plaintext file
- 对疑似存在 historical exposure 的 values 进行 rotate
GitHub Actions Secrets -> Infisical
GitHub Actions Secrets -> Infisical
- workflowごとのactual secret dependencyをinventory
- Machine Identity scopeを設計
- OIDC利用可能ならOIDCへ切り替え
- deployment jobでsecret取得を検証
- 不要になったGitHub Actions secretを削除
- 清点每个 workflow 的实际 Secret 依赖
- 设计 Machine Identity scope
- 如果可以使用 OIDC,则切换到 OIDC
- 在 deployment job 中验证 Secret 获取流程
- 删除不再需要的 GitHub Actions Secret
SOPS -> Infisical
SOPS -> Infisical
application envを移す場合:
- encrypted file内のkey schemaをinventory
- valueをInfisicalへ移行
- local/CI consumerを切り替え
- current runtimeを検証
- SOPS file / decryption key dependencyを除去
Nix/dotfiles/bootstrap等 encrypted-in-Git が目的ならSOPSを無理に移行しない。
迁移 application env 时:
- 清点 encrypted file 中的 key schema
- 将 values 迁移到 Infisical
- 切换 local/CI consumer
- 验证 current runtime
- 移除 SOPS file / decryption key dependency
如果目标是 Nix/dotfiles/bootstrap 等 encrypted-in-Git,则不要强行迁移 SOPS。
13. Recovery / provider outage
13. 恢复 / Provider 故障
self-hosted Infisical outageを理由にsecret valueをGitやchatへ退避しない。またavailability問題を理由にmanaged Infisical Cloudへ無断fallbackしてsecond canonical secret storeを作らない。
project stakesに応じて:
- bounded local token/session cache
- provider-native HA/self-hosting
- deployment platform側のruntime secret cache
- documented emergency path
を設計できる。
emergency copyを作る場合もtemporary authorityとして扱い、復旧後にreconcile/deleteする。
不要以 self-hosted Infisical outage 为由,将 Secret 值退避到 Git 或 chat。也不要以 availability 問題为由,未经许可 fallback 到 managed Infisical Cloud,从而创建第二个 canonical Secret store。
可根据 project stakes 设计:
- bounded local token/session cache
- provider-native HA/self-hosting
- deployment platform 侧的 runtime secret cache
- documented emergency path
即使创建 emergency copy,也应将其视为 temporary authority,并在恢复后进行 reconcile/delete。
14. Completion criteria
14. 完成标准
secrets managementを完了扱いするには最低限:
- secret valueのcanonical authorityが一意
- repositoryからrequired env contractをdiscoverできる
- normal developer flowがCLIで完結
- current default profileではself-host site/API endpointがnon-secret metadataとして明示され、managed Cloudへ暗黙fallbackしない
- project ID / environment/path mapping等のprovider pointerがrepositoryからdiscoverable
- Web UIがnormal taskのmandatory dependencyではない
- canonical plaintext が存在しない
.env - agent/worker accessが必要最小scope
- generic CIにproduction secretがない
- GitHub OIDCが利用可能ならstatic CI credentialより優先
- secret valueがGit / logs / Issue / PR / checkpointへ残っていない
- migration時はconsumer切替後にold duplicate storeをreconcile済み
- deviation時はInfisical採用有無ではなく必要guaranteeを満たしている
要将 Secret 管理视为完成,至少需要满足:
- Secret 值的 canonical authority 唯一
- 可从 repository 发现 required env contract
- 常规 developer flow 可完全通过 CLI 完成
- 在 current default profile 下,self-host site/API endpoint 作为 non-secret metadata 明确声明,且不会隐式 fallback 到 managed Cloud
- project ID / environment/path mapping 等 provider pointer 可从 repository 发现
- Web UI 不是 normal task 的 mandatory dependency
- 不存在 canonical plaintext
.env - agent/worker access 采用必要的最小 scope
- generic CI 中没有 production Secret
- 如果可以使用 GitHub OIDC,则优先于 static CI credential
- Git / logs / Issue / PR / checkpoint 中没有残留 Secret 值
- 迁移时,consumer 切换后已 reconcile 旧的 duplicate store
- 存在 deviation 时,关注的是是否满足必要 guarantee,而非是否采用 Infisical