Skip to content

fix(codexcli): permissions生成がCodexのprofile/rules仕様と不整合 #16

Description

@flanny7

概要

codexcli target の permissions 生成が、現行 Codex CLI の permission profile / exec policy rules 仕様と噛み合っておらず、生成された .codex を置くと Codex の shell command 実行が失敗する。

再現状況

対象環境:

  • rulesync: 8.27.0
  • Codex CLI: 0.139.0
  • macOS

rulesync generate --targets codexcli --features permissions で以下が生成される。

default_permissions = "rulesync"

[permissions.rulesync.filesystem]
"~/.bashrc" = "read"
"~/.zshrc" = "read"
glob_scan_max_depth = 8

[permissions.rulesync.filesystem.":workspace_roots"]
"curl*" = "deny"
"**/.env*" = "deny"
"**/secrets/**" = "deny"
"**/.dev.vars" = "deny"

この profile は default_permissions = "rulesync" を設定するが、通常の作業に必要な extends = ":workspace"、または ":minimal" = "read"":workspace_roots"."." = "write" がない。

結果として、project-local .codex/config.toml が存在する状態で Codex の tool shell 実行が失敗する。.codex を削除すると同じ echo してみて が成功する。

追加で見つかった問題

.codex/rules/rulesync.rulespermission.bash 由来の prefix rule が生成されるが、rulesync 側の "echo *" / "git diff *"* が Codex rules ではワイルドカードとして扱われない。

例:

  • pattern = ["echo", "*"]echo してみて に一致しない
  • echo '*' にだけ一致する

codex execpolicy check で確認済み。

期待する対応

短期的には codexcli で bash permissions を生成しない、または Codex 用 permissions feature から除外する。

根本対応としては以下が必要そう。

  1. .codex/config.toml の custom profile は extends = ":workspace" を使う、または :minimal と workspace root write を明示する
  2. permission.bash* を Codex prefix_rule.pattern のワイルドカードとして生成しない
  3. deny / allow の bash command permissions を Codex rules に変換する仕様を見直す
  4. codex execpolicy check 相当の検証を追加する

参考

noa-harness 側の暫定対応

noa-harness では一旦 rulesync.jsonc の targets から codexcli を外し、生成済み .codex/rules/rulesync.rules を削除した。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions