Skip to content

feat(secrets): fnox を tier 分離し tier1 を対話シェルに自動ロード#58

Merged
k35o merged 1 commit into
mainfrom
secrets-auto-load-tiers
Jun 22, 2026
Merged

feat(secrets): fnox を tier 分離し tier1 を対話シェルに自動ロード#58
k35o merged 1 commit into
mainfrom
secrets-auto-load-tiers

Conversation

@k35o

@k35o k35o commented Jun 22, 2026

Copy link
Copy Markdown
Owner

概要

fnox の秘密を 2段 tier に分け、「日常の API キーは自動ロードで何でも素で動く/GitHub App 秘密鍵などの機密は常駐させず守る」を両立する。codex の Missing SAKANA_API_KEY 問題の恒久対応でもある(ラッパー方式 PR #57 を置換)。

tier 設計

tier 置き場 アクセス
tier1 [secrets] SAKANA_API_KEY 等 API キー 対話シェルに自動ロード / fnox exec --
tier2 [profiles.bot] K35O_BOT_*(GitHub App 秘密鍵) fnox exec -P bot -- のみ。常駐しない

将来: 新しい秘密は「常駐してよい→[secrets]/機密→profile」に振り分けるだけ(スケールする)。

変更

  • dot_config/fnox/config.toml: K35O_BOT_*[profiles.bot.secrets] へ移動。
  • dot_config/zsh/aliases.zsh.tmpl: profile=personal かつ CLAUDECODE 以外の対話シェルで eval "$(fnox export -f env)"(tier1 のみ/~50ms・keychain プロンプト無し)。
  • dot_agents/skills/new-project/SKILL.md: bot 投入を fnox exec -P bot に。
  • dot_claude/CLAUDE.md: tier 運用を記載。

気をつける点

  • fnox export(default profile) は tier2 を除外、hook-env/fnox activate は除外できない(全部載る)ため export 方式を採用。
  • mcp__fnox__exec は元々値が空([mcp] secrets=[])。bot は CLI fnox exec -P bot で。
  • エージェント(CLAUDECODE)では auto-load せず従来どおり fnox exec

テスト(実機)

対話シェル=SAKANA載る/bot載らない・エージェント=載らない・fnox exec -P bot=bot取得可(len 1674)・codex doctor の auth ✓。

秘密を2段 tier に分け、日常の API キーは自動ロード/機密は守る両立にする。

- fnox: K35O_BOT_*(GitHub App 秘密鍵=tier2) を [secrets] → [profiles.bot.secrets] に分離。
  default の exec/export には載らず `fnox exec -P bot` で取得。SAKANA 等の API キー(tier1)は [secrets] のまま。
- zsh: aliases.zsh をテンプレ化し、個人機の対話シェル(CLAUDECODE 以外)で
  tier1 を `eval "$(fnox export -f env)"` で自動ロード。素の codex 等が鍵を読める。
  新しい API キーは [secrets] に足すだけで自動で載る。
- new-project スキル: bot secret 投入を `fnox exec -P bot` に。
- CLAUDE.md: tier 運用を記載。

旧 codex ラッパー(PR #57)はこれに置換しクローズ済み。
実機検証: 対話=SAKANA載る/bot載らない・エージェント=載らない・-P bot=bot取得可・codex doctor auth ✓。
@k35o k35o force-pushed the secrets-auto-load-tiers branch from 4b64ea3 to 3bff4cf Compare June 22, 2026 12:03
@k35o k35o merged commit 33005d1 into main Jun 22, 2026
3 checks passed
@k35o k35o deleted the secrets-auto-load-tiers branch June 22, 2026 12:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant