chore(codex agents): inherit parent model settings

This commit is contained in:
Tommaso Casaburi
2026-07-10 14:45:05 +07:00
parent ece58da78b
commit 5456ba2fb8
12 changed files with 25 additions and 33 deletions
-2
View File
@@ -1,5 +1,3 @@
model = "gpt-5.4"
model_reasoning_effort = "medium"
sandbox_mode = "read-only" sandbox_mode = "read-only"
developer_instructions = """ developer_instructions = """
Verify only the route, user flow, and acceptance criteria the parent agent gives you. Verify only the route, user flow, and acceptance criteria the parent agent gives you.
-2
View File
@@ -1,5 +1,3 @@
model = "gpt-5.4"
model_reasoning_effort = "medium"
developer_instructions = """ developer_instructions = """
Run the repo's required verification commands for the files or feature area the parent agent just changed, then fix only issues surfaced by those checks. Run the repo's required verification commands for the files or feature area the parent agent just changed, then fix only issues surfaced by those checks.
Use this order: yarn build, yarn lint, yarn type-check. Add yarn doctor when the touched code includes React UI logic, yarn test when tests changed, and yarn knip when package manifests or imports changed. Use this order: yarn build, yarn lint, yarn type-check. Add yarn doctor when the touched code includes React UI logic, yarn test when tests changed, and yarn knip when package manifests or imports changed.
-2
View File
@@ -1,5 +1,3 @@
model = "gpt-5.4"
model_reasoning_effort = "medium"
developer_instructions = """ developer_instructions = """
Implement only the concrete task or task slice assigned by the parent agent. Implement only the concrete task or task slice assigned by the parent agent.
Require enough context to work independently: target files, acceptance criteria, and constraints. Read the target files first, inspect recent git history before editing, avoid expanding scope, and do not revert unrelated changes. Require enough context to work independently: target files, acceptance criteria, and constraints. Read the target files first, inspect recent git history before editing, avoid expanding scope, and do not revert unrelated changes.
-2
View File
@@ -1,5 +1,3 @@
model = "gpt-5.4"
model_reasoning_effort = "medium"
sandbox_mode = "read-only" sandbox_mode = "read-only"
developer_instructions = """ developer_instructions = """
Profile only the routes or flows the parent agent assigns. Profile only the routes or flows the parent agent assigns.
-2
View File
@@ -1,5 +1,3 @@
model = "gpt-5.4"
model_reasoning_effort = "medium"
developer_instructions = """ developer_instructions = """
Only act when the parent agent provides both the exact React Doctor diagnostic and a concrete fix plan. Only act when the parent agent provides both the exact React Doctor diagnostic and a concrete fix plan.
Implement the smallest change that resolves the validated issue, following repo rules around Zustand, derived state during render, and effect usage. Do not widen the fix beyond the validated diagnostic. Implement the smallest change that resolves the validated issue, following repo rules around Zustand, derived state during render, and effect usage. Do not widen the fix beyond the validated diagnostic.
@@ -1,5 +1,3 @@
model = "gpt-5.4"
model_reasoning_effort = "medium"
developer_instructions = """ developer_instructions = """
Review only the recently changed React files or the file set the parent agent names. Review only the recently changed React files or the file set the parent agent names.
Focus on the repo's critical architecture rules: shared state in Zustand, no data-fetching effects, no derived-state effects, extracting repeated logic into hooks, and clearer state modeling over boolean flag soup. Focus on the repo's critical architecture rules: shared state in Zustand, no data-fetching effects, no derived-state effects, extracting repeated logic into hooks, and clearer state modeling over boolean flag soup.
-2
View File
@@ -1,5 +1,3 @@
model = "gpt-5.4"
model_reasoning_effort = "medium"
developer_instructions = """ developer_instructions = """
Test only the Android workflow the parent agent asks about on the local emulator, leaving the emulator running when you finish unless the parent agent says otherwise. Test only the Android workflow the parent agent asks about on the local emulator, leaving the emulator running when you finish unless the parent agent says otherwise.
Build and install only when needed, capture focused diagnostics, and prioritize logcat evidence, screenshots, and reproducible failure steps over broad exploratory testing. Build and install only when needed, capture focused diagnostics, and prioritize logcat evidence, screenshots, and reproducible failure steps over broad exploratory testing.
-2
View File
@@ -1,5 +1,3 @@
model = "gpt-5.4"
model_reasoning_effort = "medium"
developer_instructions = """ developer_instructions = """
Translate exactly one i18next key at a time into every supported language. Translate exactly one i18next key at a time into every supported language.
Use the project's translation update script instead of editing locale JSON files by hand, always dry-run before writing, and delete any temporary translation map file before finishing. Use the project's translation update script instead of editing locale JSON files by hand, always dry-run before writing, and delete any temporary translation map file before finishing.
+1 -1
View File
@@ -181,7 +181,7 @@ src/
- Keep equivalent workflow files aligned across all toolchains when their directories contain the same skill, hook, or agent. - Keep equivalent workflow files aligned across all toolchains when their directories contain the same skill, hook, or agent.
- Keep shared behavior equivalent while preserving harness-specific models, config formats, hook entry points, and tool invocation syntax. - Keep shared behavior equivalent while preserving harness-specific models, config formats, hook entry points, and tool invocation syntax.
- Do not configure `.claude` agents to use `composer-2`; that model is Cursor-only in this repo. Keep `.claude` agent models on Claude-supported options. - Do not configure `.claude` agents to use `composer-2`; that model is Cursor-only in this repo. Keep `.claude` agent models on Claude-supported options.
- Do not configure `.codex/agents/*.toml` with `gpt-5.3-codex` or `gpt-5.3-codex-spark`; standardize Codex agents on `gpt-5.4` unless the user explicitly requests a different model. - Do not pin `model` or `model_reasoning_effort` in committed Codex custom-agent TOMLs under `.codex/**/agents/*.toml`; omit both so subagents inherit the current parent settings. Do not use undocumented aliases such as `latest`.
- When changing shared agent behavior, update the relevant files in `.codex/skills/`, `.cursor/skills/`, `.claude/skills/`, `.codex/agents/`, `.cursor/agents/`, `.claude/agents/`, `.codex/hooks/`, `.cursor/hooks/`, `.claude/hooks/`, and the hook entry points as needed. Hook entry points are harness-specific: the `hooks` key in `.claude/settings.json` (Claude Code does not read a standalone hooks.json), `.cursor/hooks.json` (Cursor schema), and `.codex/hooks.json` (Codex schema, intentionally Claude-compatible). - When changing shared agent behavior, update the relevant files in `.codex/skills/`, `.cursor/skills/`, `.claude/skills/`, `.codex/agents/`, `.cursor/agents/`, `.claude/agents/`, `.codex/hooks/`, `.cursor/hooks/`, `.claude/hooks/`, and the hook entry points as needed. Hook entry points are harness-specific: the `hooks` key in `.claude/settings.json` (Claude Code does not read a standalone hooks.json), `.cursor/hooks.json` (Cursor schema), and `.codex/hooks.json` (Codex schema, intentionally Claude-compatible).
- If `AGENTS.md` references a skill, agent, or hook, prefer a tracked file under `.codex/`, `.cursor/`, or `.claude/` rather than an untracked local-only instruction. - If `AGENTS.md` references a skill, agent, or hook, prefer a tracked file under `.codex/`, `.cursor/`, or `.claude/` rather than an untracked local-only instruction.
- Review `.codex/config.toml`, `.codex/hooks.json`, `.cursor/hooks.json`, and `.claude/settings.json` before changing agent orchestration or hook behavior, because they are the entry points contributors will actually load. - Review `.codex/config.toml`, `.codex/hooks.json`, `.cursor/hooks.json`, and `.claude/settings.json` before changing agent orchestration or hook behavior, because they are the entry points contributors will actually load.
+5 -4
View File
@@ -128,14 +128,15 @@ If uncertain, ask the developer before adding an entry.
- **Mitigation:** Keep Portless startup behind `scripts/start-dev.js`, which now uses a branch-scoped `*.5chan.localhost` route outside the canonical case and automatically increments a `-2`, `-3`, ... suffix when that branch-scoped route is already occupied. - **Mitigation:** Keep Portless startup behind `scripts/start-dev.js`, which now uses a branch-scoped `*.5chan.localhost` route outside the canonical case and automatically increments a `-2`, `-3`, ... suffix when that branch-scoped route is already occupied.
- **Status:** confirmed - **Status:** confirmed
### Toolchain model names are not interchangeable ### Toolchain model names and inheritance are not interchangeable
- **Date:** 2026-04-08 - **Date:** 2026-04-08
- **Updated:** 2026-07-10
- **Observed by:** contributor + Codex - **Observed by:** contributor + Codex
- **Context:** Reviewing repo-managed agent configs under `.codex/agents`, `.cursor/agents`, and `.claude/agents` - **Context:** Reviewing repo-managed agent configs under `.codex/agents`, `.cursor/agents`, and `.claude/agents`
- **What was surprising:** `composer-2` is only available for Cursor in this repo, while Codex agents using `gpt-5.3-codex` or `gpt-5.3-codex-spark` perform poorly enough that they should not be configured by default. - **What was surprising:** Model names remain harness-specific, while Codex custom-agent `model` and `model_reasoning_effort` settings are optional and inherit from the parent when omitted; Codex does not document a `latest` alias for these files.
- **Impact:** Agents can silently inherit invalid or weak model settings, leading to broken subagent runs or degraded implementation quality. - **Impact:** Hard-coded Codex model or reasoning-effort settings can become stale or unsupported and prevent subagents from following the contributor's current parent configuration.
- **Mitigation:** Keep `.cursor` agent configs on Cursor-supported models only, never use `composer-2` in `.claude`, and standardize `.codex/agents/*.toml` on `gpt-5.4` unless a contributor explicitly requests an override. - **Mitigation:** Keep `.cursor` agents on Cursor-supported models, never use `composer-2` in `.claude`, and omit `model` and `model_reasoning_effort` from committed custom-agent TOMLs under `.codex/**/agents/*.toml`; `yarn ai-workflow:check` rejects pins so Codex agents keep inheriting parent settings.
- **Status:** confirmed - **Status:** confirmed
### codesign parses "5chan.app" as process ID 5 ### codesign parses "5chan.app" as process ID 5
+6 -5
View File
@@ -361,7 +361,7 @@ src/
- Keep equivalent workflow files aligned across all toolchains when their directories contain the same skill, hook, or agent. - Keep equivalent workflow files aligned across all toolchains when their directories contain the same skill, hook, or agent.
- Keep shared behavior equivalent while preserving harness-specific models, config formats, hook entry points, and tool invocation syntax. - Keep shared behavior equivalent while preserving harness-specific models, config formats, hook entry points, and tool invocation syntax.
- Do not configure `.claude` agents to use `composer-2`; that model is Cursor-only in this repo. Keep `.claude` agent models on Claude-supported options. - Do not configure `.claude` agents to use `composer-2`; that model is Cursor-only in this repo. Keep `.claude` agent models on Claude-supported options.
- Do not configure `.codex/agents/*.toml` with `gpt-5.3-codex` or `gpt-5.3-codex-spark`; standardize Codex agents on `gpt-5.4` unless the user explicitly requests a different model. - Do not pin `model` or `model_reasoning_effort` in committed Codex custom-agent TOMLs under `.codex/**/agents/*.toml`; omit both so subagents inherit the current parent settings. Do not use undocumented aliases such as `latest`.
- When changing shared agent behavior, update the relevant files in `.codex/skills/`, `.cursor/skills/`, `.claude/skills/`, `.codex/agents/`, `.cursor/agents/`, `.claude/agents/`, `.codex/hooks/`, `.cursor/hooks/`, `.claude/hooks/`, and the hook entry points as needed. Hook entry points are harness-specific: the `hooks` key in `.claude/settings.json` (Claude Code does not read a standalone hooks.json), `.cursor/hooks.json` (Cursor schema), and `.codex/hooks.json` (Codex schema, intentionally Claude-compatible). - When changing shared agent behavior, update the relevant files in `.codex/skills/`, `.cursor/skills/`, `.claude/skills/`, `.codex/agents/`, `.cursor/agents/`, `.claude/agents/`, `.codex/hooks/`, `.cursor/hooks/`, `.claude/hooks/`, and the hook entry points as needed. Hook entry points are harness-specific: the `hooks` key in `.claude/settings.json` (Claude Code does not read a standalone hooks.json), `.cursor/hooks.json` (Cursor schema), and `.codex/hooks.json` (Codex schema, intentionally Claude-compatible).
- If `AGENTS.md` references a skill, agent, or hook, prefer a tracked file under `.codex/`, `.cursor/`, or `.claude/` rather than an untracked local-only instruction. - If `AGENTS.md` references a skill, agent, or hook, prefer a tracked file under `.codex/`, `.cursor/`, or `.claude/` rather than an untracked local-only instruction.
- Review `.codex/config.toml`, `.codex/hooks.json`, `.cursor/hooks.json`, and `.claude/settings.json` before changing agent orchestration or hook behavior, because they are the entry points contributors will actually load. - Review `.codex/config.toml`, `.codex/hooks.json`, `.cursor/hooks.json`, and `.claude/settings.json` before changing agent orchestration or hook behavior, because they are the entry points contributors will actually load.
@@ -944,14 +944,15 @@ If uncertain, ask the developer before adding an entry.
- **Mitigation:** Keep Portless startup behind `scripts/start-dev.js`, which now uses a branch-scoped `*.5chan.localhost` route outside the canonical case and automatically increments a `-2`, `-3`, ... suffix when that branch-scoped route is already occupied. - **Mitigation:** Keep Portless startup behind `scripts/start-dev.js`, which now uses a branch-scoped `*.5chan.localhost` route outside the canonical case and automatically increments a `-2`, `-3`, ... suffix when that branch-scoped route is already occupied.
- **Status:** confirmed - **Status:** confirmed
### Toolchain model names are not interchangeable ### Toolchain model names and inheritance are not interchangeable
- **Date:** 2026-04-08 - **Date:** 2026-04-08
- **Updated:** 2026-07-10
- **Observed by:** contributor + Codex - **Observed by:** contributor + Codex
- **Context:** Reviewing repo-managed agent configs under `.codex/agents`, `.cursor/agents`, and `.claude/agents` - **Context:** Reviewing repo-managed agent configs under `.codex/agents`, `.cursor/agents`, and `.claude/agents`
- **What was surprising:** `composer-2` is only available for Cursor in this repo, while Codex agents using `gpt-5.3-codex` or `gpt-5.3-codex-spark` perform poorly enough that they should not be configured by default. - **What was surprising:** Model names remain harness-specific, while Codex custom-agent `model` and `model_reasoning_effort` settings are optional and inherit from the parent when omitted; Codex does not document a `latest` alias for these files.
- **Impact:** Agents can silently inherit invalid or weak model settings, leading to broken subagent runs or degraded implementation quality. - **Impact:** Hard-coded Codex model or reasoning-effort settings can become stale or unsupported and prevent subagents from following the contributor's current parent configuration.
- **Mitigation:** Keep `.cursor` agent configs on Cursor-supported models only, never use `composer-2` in `.claude`, and standardize `.codex/agents/*.toml` on `gpt-5.4` unless a contributor explicitly requests an override. - **Mitigation:** Keep `.cursor` agents on Cursor-supported models, never use `composer-2` in `.claude`, and omit `model` and `model_reasoning_effort` from committed custom-agent TOMLs under `.codex/**/agents/*.toml`; `yarn ai-workflow:check` rejects pins so Codex agents keep inheriting parent settings.
- **Status:** confirmed - **Status:** confirmed
### codesign parses "5chan.app" as process ID 5 ### codesign parses "5chan.app" as process ID 5
+13 -7
View File
@@ -13,8 +13,8 @@
* .cursor/hooks.json, .codex/hooks.json) wire the same hook scripts * .cursor/hooks.json, .codex/hooks.json) wire the same hook scripts
* - SKILL.md frontmatter has a name matching its directory and a * - SKILL.md frontmatter has a name matching its directory and a
* non-empty description * non-empty description
* - agent model rules: no composer-* models in .claude agents, no * - agent model rules: no composer-* models in .claude agents, no pinned
* gpt-5.3-codex* models in .codex agents * model or reasoning-effort settings in Codex custom-agent TOMLs
* *
* Exemptions live HERE in validator-owned allowlists, not in the exempted * Exemptions live HERE in validator-owned allowlists, not in the exempted
* files, so a drifted copy cannot silently exempt itself. Every entry needs * files, so a drifted copy cannot silently exempt itself. Every entry needs
@@ -204,11 +204,17 @@ for (const agent of agentSets.get('.claude')) {
errors.push(`banned model "${fm.model}" (Cursor-only) in .claude/agents/${agent}.md`); errors.push(`banned model "${fm.model}" (Cursor-only) in .claude/agents/${agent}.md`);
} }
} }
for (const agent of agentSets.get('.codex')) { const codexAgentTomls = listFilesRecursive(path.join(repoRoot, '.codex')).filter((file) =>
const toml = read(path.join(repoRoot, '.codex', 'agents', `${agent}.toml`)); /(^|\/)agents\/[^/]+\.toml$/.test(file),
const model = toml.match(/^model\s*=\s*"([^"]*)"/m)?.[1]; );
if (model === 'gpt-5.3-codex' || model === 'gpt-5.3-codex-spark') { for (const file of codexAgentTomls) {
errors.push(`banned model "${model}" in .codex/agents/${agent}.toml (standardize on gpt-5.4)`); const toml = read(path.join(repoRoot, '.codex', file));
for (const field of ['model', 'model_reasoning_effort']) {
if (new RegExp(`^${field}\\s*=`, 'm').test(toml)) {
errors.push(
`pinned Codex setting "${field}" in .codex/${file} (omit it so the agent inherits from its parent)`,
);
}
} }
} }