Codex の skills.config はユーザー設定でスキル無効化に使い、path は完全一致として扱う
Codex の skills.config によるスキル無効化は、少なくとも確認した範囲では ~/.codex/config.toml 側に置くと有効で、プロジェクト配下の .codex/config.toml に置いても repo-local skill の無効化には効かなかった。
path は glob 非対応で、/path/to/worktree/*/.agents/skills/name/SKILL.md のような指定では一致しない。絶対 path はその worktree の実パスと一致する場合だけ効くため、Git worktree ごとに .agents/skills/.../SKILL.md の絶対 path が変わると、main worktree 用の無効化設定だけでは別 worktree で同じ skill が再び有効になる。
注意点として、CLI の -c 'skills.config=[{path=".agents/skills/foo/SKILL.md",enabled=false}]' では CWD 相対のように効いたが、~/.codex/config.toml に [[skills.config]] path = ".agents/skills/foo/SKILL.md" と書いた場合は、main/worktree の CWD 相対としては効かなかった。したがって、ユーザー設定ファイル内の相対 path で worktree 群をまとめて無効化する運用は期待しないほうがよい。
公開 issue でも近い問題が報告されている。openai/codex #20210 と #24237 は project-local .codex/config.toml の [[skills.config]] が skill filtering に効かず、~/.codex/config.toml や -c session flags では効くという内容。#23987 は skill disable が path-scoped で、同名 skill の別 source が残るとユーザー視点で無効化されたように見えても active な copy が残るという内容。#25324 でも workaround として user config に対象 skill の絶対 path を明示列挙している。
実務上の選択肢は、完全に無効化したいなら ~/.codex/config.toml に現在使う各 worktree の絶対 path を複数列挙すること。暗黙起動だけ止めればよいなら、skill 側に agents/openai.yaml を置いて policy.allow_implicit_invocation: false を設定すると、worktree path に依存せず repo 内容として効く。ただし $skill の明示起動は止まらない。