FACTUAL ACTIVITY RECORD · 実際の作業をもとにした活動記録
GitHub接続を最初から外部実行へ分離する
sandbox内の名前解決へ依存せず、接続経路、認証確認、環境blockerを一つのSkillへそろえる
目的
GitHubへの接続は、許可されたdomainであってもsandbox内ではDNSやegressが利用できず、失敗後に外部実行へ切り替えることが繰り返されていた。CEOは、接続操作を最初の試行から外部実行にし、毎回同じ指示を出さなくても予測できる運用へ変えるよう求めた。
同時に、workspace内の通常編集と外部状態への操作を分け、接続できない時に成功したような報告をしないこと、既存の認証、秘密情報、親子workspace、承認の境界を弱めないことも必要だった。
実装
.agents/skills/github-external-operations/SKILL.mdを追加し、GitHub remote、API、gh、app connectorによるread / writeを、最初からsandbox-external contextまたはsandbox内DNSに依存しないconnectorで実行する契約を定めた。domain allowlistは互換設定であり、sandbox内接続の可用性や許可を保証しないものとして、接続probeと失敗後の再試行を禁止した。
- 最初にworkspace root、origin、親子境界、local状態をread-onlyで確認し、GitHub上の状態はconnectorを第一候補として取得する。
- connectorが利用不能、権限不足、対象workspaceや作業対象を特定不能、または必要な操作を提供しない場合に限り、通常の外部操作をsandbox-externalのCLIへ切り替える。
- remote Gitまたは
ghを使う前に、対象workspace自身の認証helperを同じ外部実行contextで動かし、子workspaceから親helperを流用しない。 - 外部状態を書き換えた後は状態を再取得し、対象と結果が一致するまで完了と報告しない。
connectorとsandbox-external contextの両方が使えない場合は、environment blockerを返すようにした。blockerには対象workspaceと予定操作、使えない経路と理由、未変更または未確認の外部状態、localだけで完了した範囲、満たせないgate、next actionと返却先を含める。copy-readyな文面は未作成draftとして返せても、外部状態を作成・確認した証拠や必須gateの代わりにはしない。
認証失敗時だけ再認証へ進み、secretやcredentialを出力しないこと、workspaceごとのhelper境界を保つこと、高risk操作の承認を外部実行という理由で緩めないことをinvariantにした。外部実行は操作場所の指定であり、権限を追加する仕組みではない。
最初の実装確認では、共有SkillがCLIへのfallbackを「connectorに必要な操作がない場合」だけに絞る一方、一部の役割定義とsetup文書は利用不能、権限不足、対象特定不能も条件に含めていた。この不一致を修正し、通常操作の四条件、高riskな状態変更のno-fallback、外部実行、認証preflightを同じ表現へそろえた。
新しいSkillを既存のdelivery Skillと変更確認Skillから必須参照し、9件のcustom role、実行config、command rules、運用chart、setup、handoff例へ同じ境界を反映した。新しいroleは追加せず、最大同時thread数と階層の設定も変更しなかった。
確認方法として、3件のrepo-local Skillをvalidatorへ通し、Skill用YAMLとconfig・9件のrole TOMLをparseした。さらに、9件すべてが新しいSkillへroutingされていること、fallbackとenvironment blockerの語彙が横断一致すること、command policyの代表ケース、placeholder、差分の空白を検査した。
- GitHub app / plugin connectorはsandbox内DNSに依存しないsandbox-external pathとして第一候補にする
- CLIが必要な時はcommandを最初からsandbox-external execution contextで実行する。sandbox内で接続可否をprobeせず、DNS / egress failure後の再試行経路にしない
- `.codex/config.toml`のGitHub domain allowlistは他用途との互換設定であり、sandbox内GitHub操作の可用性、許可、fallbackを保証しない図を描画しています…
確認したこと
確認結果
変更は23ファイル、164行追加、43行削除となり、56行のGitHub外部操作Skillと4行のSkill interface定義が追加された。
3件のSkill validation、1件のYAML、configを含む10件のTOML parse、9件中9件のrole routing、command policyの代表ケース、横断検索、差分検査がすべて成功した。
通常操作のCLI fallbackは、connector利用不能、権限不足、対象特定不能、操作未提供の四条件へ統一され、高riskな状態変更のno-fallbackと認証preflightは維持されていた。
workspace内の通常編集、外部状態、secret、親子workspace、承認gateの境界が分離され、どちらの接続経路も使えない場合は未確認状態を明示するenvironment blockerへ到達する構成になっていた。
cutoff時点で新しいSkillと関連する役割・運用設定は組織のcurrent sourceへ反映されていた。実際のDNS infrastructureやsandbox network、GitHubの権限・認証方式は変更しておらず、すべての接続環境で成功することまでは確認していない。
完了とした根拠
GitHub接続を最初から外部実行へ分離するSkill、四つのfallback条件、認証とenvironment blockerの境界が役割・設定・運用文書で一致し、構文・routing・policy検査に成功した状態がcurrent sourceへ反映されたことをもって完了とした。