# Mismatch between displayed custom permissions and runtime settings
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
カスタム権限の画面表示と実行時指定の不一致
状態: 調査済み・未復旧・GitHub #45586へ報告済み・未復旧。2026-09-15。
送信用本文
ChatGPT desktop app の Codex で、カスタム権限プロファイルの表示と実行時指定が一致しません。アプリは 26.908.40834 / build 8881、macOS 26.3.1 arm64 です。
カスタムプロファイルを既定に設定し、標準の :workspace を継承したうえで、作業ディレクトリ外の出力先を追加workspace rootおよびwrite対象として登録しています。ユーザーは対象タスクの画面表示が作成時からカスタムプロファイルのままであると確認しています。しかし対象タスクの実行環境には、その追加出力先のwriteが現れません。同一プロジェクトの別タスクでは追加writeが宣言されています。
アプリの標準診断ログを権限関連の値だけに限定して確認した結果:
| 記録 | requestPermissionProfile | requestSandboxPolicyType | useAppServerPermissionDefault |
|---|---|---|---|
| create_thread で作成した対象タスクの初回 turn/start 準備 | :workspace | null | false |
| 同じ対象タスクへの後続ユーザーメッセージ | null | null | true |
| 別の既存対象タスクへのタスク間メッセージ | null | workspaceWrite(writableRoots 2件) | false |
初回記録は2026-09-15 01:20:02.265 UTCの「Reasoning summary turn-start config resolved」です。その後のturn/start応答のerrorCodeはnullでした。これは要求準備の証拠であり、実効プロファイル名を含むサーバー応答の証拠ではありません。null/default=trueだけで権限喪失とは判断していません。
既存の通常実行の保存済みエラー記録には、追加出力先での追記・lock取得のPermissionErrorがあります。一方で作業ディレクトリ内の別出力は保存されており、全ファイル書込が不可能という事象ではありません。別途の入力検証エラー・データ品質保留はこの権限問題と区別しています。
実装側へ確認・修正を依頼したい箇所
- create_thread の同一CWDでの親権限継承と、新規作成の既定プロファイル解決。画面のカスタム選択に対して、初回要求が :workspace になった入力・分岐を特定してください。
- タスク間メッセージ・heartbeatが、名前付きプロファイルをlegacy sandboxPolicyへ変換して追加ルートやdeny規則を失わないか確認してください。
- 保存された選択、要求に送るプロファイル、実効filesystem規則の三者を正規の手段で照合・再同期する復旧手順、または修正版を案内してください。
配布アプリの静的読取では、heartbeatの ds→ps→Ss 経路が approvalPolicy/approvalsReviewer/sandboxPolicy を渡す一方、名前付き permissions と runtimeWorkspaceRoots を同様には渡していない候補が見つかりました。実際の分岐・sandboxPolicyに解決済みルートが入っている可能性・サーバー側補正は未確認で、原因確定ではありません。
また、別システムの管理対象PreToolUse hookにPython構文エラーが見つかりました。このhookはapply_patch/Edit/Write対象であり、追加ルート欠落やシェル経由のPermissionErrorとの因果関係は未確認です。権限継承の問題と分けて扱ってください。
修正後の確認条件
- 同じ対象タスクで、画面・実行時プロファイル・必要出力先writeの一致を確認する。
- 既存のdeny規則を維持する。
- 後続メッセージと既存の通常予定回でも適用が維持されることを確認する。
- 実効権限の確認と、通常処理の保存成功を分けて記録する。
全権限開放、管理hook無効化、タスクDBの直接変更、過去の通常処理の再実行は求めていません。ユーザーの設定し直し・繰り返し承認を未実施の必須条件として扱わず、実装側の指定と適用の不一致を調べてください。
この資料の扱い
この資料は送信用の抜粋です。個人名、ローカル絶対パス、タスクID、価格・口座情報、資格情報、会話全文、ログ全文、設定全文は含みません。生ログや会話全体の共有は別に選択する操作です。
送信入口: アプリの入力欄で / を入力し、フィードバックを選択します。
公式案内: https://learn.chatgpt.com/docs/reference/troubleshooting
送信後の受付IDと、案内された復旧手順または修正版が次の入力です。この資料作成だけでは修復は進行しておらず、復旧時刻も未定です。
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the create_thread and heartbeat ds→ps→Ss paths mentioned in the report, then compare the saved profile, request values, and effective filesystem rules. The issue is done when custom permissions and runtime behavior match, deny rules remain intact, and the behavior persists for follow-up messages and existing runs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- security
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100