From c6146659fc2ce6ba3ca9d166d2bd25146767e3c5 Mon Sep 17 00:00:00 2001 From: Avi Fenesh Date: Thu, 23 Apr 2026 03:17:53 +0300 Subject: [PATCH 1/3] fix(codex): catch up to rust-v0.122.0 (8 new top-level config keys) Closes #747. Triage of openai/codex rust-v0.118.0 -> rust-v0.122.0 (~150 PRs in the window) surfaced ONE structural change agnix needs to absorb: The upstream config-schema.json (verified 2026-04-22) gained 8 new top-level keys that agnix's CDX-CFG-006 (unknown top-level config key) would false-positive on: - experimental_realtime_start_instructions - experimental_realtime_ws_startup_context - include_apps_instructions - include_environment_context - include_permissions_instructions - marketplaces - realtime - tool_suggest Added all 8 to KNOWN_CONFIG_TOP_LEVEL_KEYS in crates/agnix-core/src/rules/codex.rs. Added a regression test (test_cdx_cfg_006_codex_v0_122_keys_accepted) that uses every one of the 8 keys in a single config and asserts zero CDX-CFG-006 diagnostics. Other inspected upstream changes that need NO agnix changes: - MCP server env config (#18085) - env/env_vars already known - AGENTS.md discovery refactor (#18035) - file format unchanged - Filesystem deny-read globs (#15979, #17740, #18096) - permissions already a known top-level key; agnix doesn't drill into sub-objects - PermissionRequest hooks (#17563) - agnix doesn't validate Codex hooks - models.json removal (#18585) - CDX-CFG-014 is a type-only check, no static model list to update - All TUI/runtime/refactor/CI PRs - no config-schema impact Documentation: - Bumped verified_on to 2026-04-22 for all 58 CDX-* rules in knowledge-base/rules.json (+ synced crates/agnix-rules/rules.json) - Bumped RESEARCH-TRACKING.md "Last Reviewed" for Codex CLI from 2026-02-05 to 2026-04-22 - Regenerated website/docs/rules/generated/*.md via scripts/generate-docs-rules.py (forced by docs_website_parity test) Verified locally: - cargo clippy --workspace --all-targets --all-features -- -D warnings clean - cargo test -p agnix-core --lib: 3444 passed (+1 new regression test) - cargo test -p agnix-rules --tests: 47 + 4 parity tests pass - cargo fmt --all clean --- CHANGELOG.md | 1 + crates/agnix-core/src/rules/codex.rs | 36 ++++++ crates/agnix-rules/rules.json | 118 ++++++++++---------- knowledge-base/RESEARCH-TRACKING.md | 2 +- knowledge-base/rules.json | 118 ++++++++++---------- website/docs/rules/generated/cdx-000.md | 2 +- website/docs/rules/generated/cdx-001.md | 2 +- website/docs/rules/generated/cdx-002.md | 2 +- website/docs/rules/generated/cdx-003.md | 2 +- website/docs/rules/generated/cdx-004.md | 2 +- website/docs/rules/generated/cdx-005.md | 2 +- website/docs/rules/generated/cdx-006.md | 2 +- website/docs/rules/generated/cdx-ag-001.md | 2 +- website/docs/rules/generated/cdx-ag-002.md | 2 +- website/docs/rules/generated/cdx-ag-003.md | 2 +- website/docs/rules/generated/cdx-ag-004.md | 2 +- website/docs/rules/generated/cdx-ag-005.md | 2 +- website/docs/rules/generated/cdx-ag-006.md | 2 +- website/docs/rules/generated/cdx-ag-007.md | 2 +- website/docs/rules/generated/cdx-app-001.md | 2 +- website/docs/rules/generated/cdx-app-002.md | 2 +- website/docs/rules/generated/cdx-app-003.md | 2 +- website/docs/rules/generated/cdx-cfg-001.md | 2 +- website/docs/rules/generated/cdx-cfg-002.md | 2 +- website/docs/rules/generated/cdx-cfg-003.md | 2 +- website/docs/rules/generated/cdx-cfg-004.md | 2 +- website/docs/rules/generated/cdx-cfg-005.md | 2 +- website/docs/rules/generated/cdx-cfg-006.md | 2 +- website/docs/rules/generated/cdx-cfg-007.md | 2 +- website/docs/rules/generated/cdx-cfg-008.md | 2 +- website/docs/rules/generated/cdx-cfg-009.md | 2 +- website/docs/rules/generated/cdx-cfg-010.md | 2 +- website/docs/rules/generated/cdx-cfg-011.md | 2 +- website/docs/rules/generated/cdx-cfg-012.md | 2 +- website/docs/rules/generated/cdx-cfg-013.md | 2 +- website/docs/rules/generated/cdx-cfg-014.md | 2 +- website/docs/rules/generated/cdx-cfg-015.md | 2 +- website/docs/rules/generated/cdx-cfg-016.md | 2 +- website/docs/rules/generated/cdx-cfg-017.md | 2 +- website/docs/rules/generated/cdx-cfg-018.md | 2 +- website/docs/rules/generated/cdx-cfg-019.md | 2 +- website/docs/rules/generated/cdx-cfg-020.md | 2 +- website/docs/rules/generated/cdx-cfg-021.md | 2 +- website/docs/rules/generated/cdx-cfg-022.md | 2 +- website/docs/rules/generated/cdx-cfg-023.md | 2 +- website/docs/rules/generated/cdx-cfg-024.md | 2 +- website/docs/rules/generated/cdx-cfg-025.md | 2 +- website/docs/rules/generated/cdx-cfg-026.md | 2 +- website/docs/rules/generated/cdx-cfg-027.md | 2 +- website/docs/rules/generated/cdx-pl-001.md | 2 +- website/docs/rules/generated/cdx-pl-002.md | 2 +- website/docs/rules/generated/cdx-pl-003.md | 2 +- website/docs/rules/generated/cdx-pl-004.md | 2 +- website/docs/rules/generated/cdx-pl-005.md | 2 +- website/docs/rules/generated/cdx-pl-006.md | 2 +- website/docs/rules/generated/cdx-pl-007.md | 2 +- website/docs/rules/generated/cdx-pl-008.md | 2 +- website/docs/rules/generated/cdx-pl-009.md | 2 +- website/docs/rules/generated/cdx-pl-010.md | 2 +- website/docs/rules/generated/cdx-pl-011.md | 2 +- website/docs/rules/generated/cdx-pl-012.md | 2 +- website/docs/rules/generated/cdx-pl-013.md | 2 +- website/docs/rules/generated/cdx-pl-014.md | 2 +- 63 files changed, 214 insertions(+), 177 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0051fcd0..923b1804c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Docusaurus** - bumped `@docusaurus/core` and `@docusaurus/preset-classic` from 3.9.2 to 3.10.0. ### Fixed +- **Codex CLI rust-v0.118.0 -> rust-v0.122.0 catch-up** (#747) - upstream `config-schema.json` (verified 2026-04-22) gained 8 new top-level keys (`experimental_realtime_start_instructions`, `experimental_realtime_ws_startup_context`, `include_apps_instructions`, `include_environment_context`, `include_permissions_instructions`, `marketplaces`, `realtime`, `tool_suggest`). Without this fix, agnix would false-positive CDX-CFG-006 (unknown top-level config key) on any current Codex `config.toml` that uses them. Added all 8 to `KNOWN_CONFIG_TOP_LEVEL_KEYS` in `crates/agnix-core/src/rules/codex.rs` plus a regression test. Documentation: bumped `verified_on` for all 58 CDX-* rules to 2026-04-22; bumped `RESEARCH-TRACKING.md` "Last Reviewed" for Codex CLI from 2026-02-05 to 2026-04-22. Verified MCP server config (`env`, `env_vars`), AGENTS.md discovery refactor (#18035), filesystem deny-read globs (#15979), and PermissionRequest hooks (#17563) require no agnix changes - their upstream effects are runtime-only, additive, or already covered by existing validators. - **Claude Code v2.1.90 -> v2.1.117 catch-up** (#745) - `Monitor` (the new built-in tool added in v2.1.98 for streaming events from background scripts) is now in `KNOWN_AGENT_TOOLS`, so `tools: [Monitor]` in agent frontmatter no longer false-positives CC-AG-009/CC-AG-010. `xhigh` (the new effort level for Opus 4.7, added in v2.1.111) is now in `schemas::skill::VALID_EFFORT_LEVELS` (the single source of truth shared by both agent CC-AG-014 and skill CC-SK-018 validation), so `effort: xhigh` no longer false-positives in either rule. The agent `color` field (display color for the task list and transcript) is now a typed field on `AgentSchema` and listed in `KNOWN_AGENT_FIELDS`, so `color: blue` no longer false-positives CC-AG-019. Documentation: bumped `verified_on` for CC-AG-009/010/011/014/019 and CC-SK-018 to 2026-04-22; added a single scope note at the top of the `CLAUDE CODE RULES (SUBAGENTS)` section in `VALIDATION-RULES.md` that agent-frontmatter `hooks` and `mcpServers` are loaded for both subagent spawning and `--agent` main-thread sessions (v2.1.116/v2.1.117); bumped `RESEARCH-TRACKING.md` "Last Reviewed" for Claude Code from 2026-02-05 to 2026-04-22. - **Clippy errors under Rust 1.95** - collapsed nested `if` blocks into match guards in `kiro_steering.rs`, `roo.rs`, and `windsurf.rs`, and switched `fixes.rs` to `sort_by_key` with `Reverse`. Resolves `collapsible_match` and `unnecessary_sort_by` lints newly enforced on stable 1.95, unblocking CI on `main` and all open PRs. - **`[files].exclude` silently half-worked** (#722) - previously this filter ran at `resolve_file_type`, which skipped per-file validators but left project-level rules (AGM-006, XP-004/005/006) collecting vendored paths by filename during the walk. A vendored `AGENTS.md` would still fire "Nested AGENTS.md" even when excluded. `[files].exclude` now joins the walker filter alongside top-level `exclude`, so both filters share one "don't look at this path" semantic and cross-file rules honour it too. diff --git a/crates/agnix-core/src/rules/codex.rs b/crates/agnix-core/src/rules/codex.rs index 32dbf61b3..3d16e0d1c 100644 --- a/crates/agnix-core/src/rules/codex.rs +++ b/crates/agnix-core/src/rules/codex.rs @@ -147,9 +147,11 @@ const KNOWN_CONFIG_TOP_LEVEL_KEYS: &[&str] = &[ "developer_instructions", "disable_paste_burst", "experimental_compact_prompt_file", + "experimental_realtime_start_instructions", "experimental_realtime_ws_backend_prompt", "experimental_realtime_ws_base_url", "experimental_realtime_ws_model", + "experimental_realtime_ws_startup_context", "experimental_use_freeform_apply_patch", "experimental_use_unified_exec_tool", "features", @@ -160,10 +162,14 @@ const KNOWN_CONFIG_TOP_LEVEL_KEYS: &[&str] = &[ "ghost_snapshot", "hide_agent_reasoning", "history", + "include_apps_instructions", + "include_environment_context", + "include_permissions_instructions", "instructions", "js_repl_node_module_dirs", "js_repl_node_path", "log_dir", + "marketplaces", "mcp_oauth_callback_port", "mcp_oauth_callback_url", "mcp_oauth_credentials_store", @@ -195,6 +201,7 @@ const KNOWN_CONFIG_TOP_LEVEL_KEYS: &[&str] = &[ "project_doc_max_bytes", "project_root_markers", "projects", + "realtime", "review_model", "sandbox_mode", "sandbox_workspace_write", @@ -205,6 +212,7 @@ const KNOWN_CONFIG_TOP_LEVEL_KEYS: &[&str] = &[ "sqlite_home", "suppress_unstable_features_warning", "tool_output_token_limit", + "tool_suggest", "tools", "tui", "web_search", @@ -3101,6 +3109,34 @@ name = "test" assert!(diagnostics.iter().any(|d| d.rule == "CDX-CFG-006")); } + #[test] + fn test_cdx_cfg_006_codex_v0_122_keys_accepted() { + // 8 top-level keys present in upstream config-schema.json (verified + // 2026-04-22) but missing from KNOWN_CONFIG_TOP_LEVEL_KEYS before this + // change. Ensure agnix doesn't false-positive on a config that uses + // every one of them. + let toml = r#" +experimental_realtime_start_instructions = "hi" +experimental_realtime_ws_startup_context = "ctx" +include_apps_instructions = true +include_environment_context = true +include_permissions_instructions = false +marketplaces = [] +realtime = {} +tool_suggest = "off" +"#; + let diagnostics = validate_config(toml); + let unknown: Vec<_> = diagnostics + .iter() + .filter(|d| d.rule == "CDX-CFG-006") + .collect(); + assert!( + unknown.is_empty(), + "v0.122 top-level keys should not trigger CDX-CFG-006, got: {:?}", + unknown + ); + } + #[test] fn test_cdx_cfg_007_danger_full_access_without_ack() { let diagnostics = validate_config("sandbox_mode = \"danger-full-access\""); diff --git a/crates/agnix-rules/rules.json b/crates/agnix-rules/rules.json index fe940327c..5a3f10ec2 100644 --- a/crates/agnix-rules/rules.json +++ b/crates/agnix-rules/rules.json @@ -3497,7 +3497,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-09", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3524,7 +3524,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-07", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3552,7 +3552,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-07", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3580,7 +3580,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-07", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3607,7 +3607,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-14", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3635,7 +3635,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-14", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3662,7 +3662,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md/" ], - "verified_on": "2026-02-26", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3691,7 +3691,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3720,7 +3720,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3749,7 +3749,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3778,7 +3778,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3807,7 +3807,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3836,7 +3836,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3865,7 +3865,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3894,7 +3894,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3923,7 +3923,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3952,7 +3952,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3981,7 +3981,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4010,7 +4010,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4038,7 +4038,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4066,7 +4066,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4094,7 +4094,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4122,7 +4122,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4150,7 +4150,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4178,7 +4178,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4206,7 +4206,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4234,7 +4234,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4262,7 +4262,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4290,7 +4290,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4317,7 +4317,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4344,7 +4344,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4371,7 +4371,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4398,7 +4398,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4425,7 +4425,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4452,7 +4452,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4479,7 +4479,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4508,7 +4508,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4536,7 +4536,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4564,7 +4564,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4591,7 +4591,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4619,7 +4619,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4647,7 +4647,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4676,7 +4676,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4704,7 +4704,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4733,7 +4733,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4761,7 +4761,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4789,7 +4789,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4817,7 +4817,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4845,7 +4845,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4873,7 +4873,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4901,7 +4901,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4929,7 +4929,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4957,7 +4957,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4985,7 +4985,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-03-28", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -5013,7 +5013,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-03-28", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -5041,7 +5041,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-03-28", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -5069,7 +5069,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-03-28", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -5097,7 +5097,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-03-28", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -12237,4 +12237,4 @@ } ] } -} +} \ No newline at end of file diff --git a/knowledge-base/RESEARCH-TRACKING.md b/knowledge-base/RESEARCH-TRACKING.md index 150872d9f..7f0e32e13 100644 --- a/knowledge-base/RESEARCH-TRACKING.md +++ b/knowledge-base/RESEARCH-TRACKING.md @@ -17,7 +17,7 @@ Tools are organized by support tier (see [../CONTRIBUTING.md#tool-tier-system](. | Tool | Config Format | Documentation URL | Monitoring | Frequency | Last Reviewed | Rule Prefix | |------|---------------|-------------------|------------|-----------|---------------|-------------| | Claude Code | `CLAUDE.md`, `.claude/settings.json` | https://code.claude.com/docs/en | Automated (spec-drift.yml + tool-release-watch.yml) | Weekly | 2026-04-22 | CC-SK, CC-HK, CC-MEM, CC-AG, CC-PL | -| Codex CLI | `AGENTS.md`, `codex.toml` | https://developers.openai.com/codex/ | Automated (spec-drift.yml + tool-release-watch.yml) | Weekly | 2026-02-05 | AGM, XP | +| Codex CLI | `AGENTS.md`, `codex.toml` | https://developers.openai.com/codex/ | Automated (spec-drift.yml + tool-release-watch.yml) | Weekly | 2026-04-22 | AGM, XP | | OpenCode | `AGENTS.md`, `.opencode/config.json` | https://opencode.ai/docs/ | Automated (spec-drift.yml + tool-release-watch.yml) | Weekly | 2026-02-05 | AGM, XP | | Kiro CLI | `.kiro/steering/*.md`, `.kiro/agents/*.json`, `.kiro/hooks/*.kiro.hook`, `.kiro/settings/mcp.json` | https://kiro.dev/changelog/cli/ | Automated (tool-release-watch.yml via HTML scrape) | Quarterly | 2026-02-05 | -- | diff --git a/knowledge-base/rules.json b/knowledge-base/rules.json index fe940327c..5a3f10ec2 100644 --- a/knowledge-base/rules.json +++ b/knowledge-base/rules.json @@ -3497,7 +3497,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-09", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3524,7 +3524,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-07", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3552,7 +3552,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-07", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3580,7 +3580,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-07", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3607,7 +3607,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-14", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3635,7 +3635,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-02-14", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3662,7 +3662,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md/" ], - "verified_on": "2026-02-26", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3691,7 +3691,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3720,7 +3720,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3749,7 +3749,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3778,7 +3778,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3807,7 +3807,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3836,7 +3836,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3865,7 +3865,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3894,7 +3894,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3923,7 +3923,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3952,7 +3952,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -3981,7 +3981,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4010,7 +4010,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4038,7 +4038,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4066,7 +4066,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4094,7 +4094,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4122,7 +4122,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4150,7 +4150,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4178,7 +4178,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4206,7 +4206,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4234,7 +4234,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4262,7 +4262,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4290,7 +4290,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4317,7 +4317,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4344,7 +4344,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4371,7 +4371,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4398,7 +4398,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4425,7 +4425,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4452,7 +4452,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4479,7 +4479,7 @@ "source_urls": [ "https://developers.openai.com/codex/guides/agents-md" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4508,7 +4508,7 @@ "https://developers.openai.com/codex/config-schema.json", "https://developers.openai.com/codex/enterprise/managed-configuration" ], - "verified_on": "2026-03-03", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4536,7 +4536,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4564,7 +4564,7 @@ "https://developers.openai.com/codex/config-reference", "https://developers.openai.com/codex/config-schema.json" ], - "verified_on": "2026-03-06", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -4591,7 +4591,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4619,7 +4619,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4647,7 +4647,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4676,7 +4676,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4704,7 +4704,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4733,7 +4733,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4761,7 +4761,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4789,7 +4789,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4817,7 +4817,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4845,7 +4845,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4873,7 +4873,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4901,7 +4901,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4929,7 +4929,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4957,7 +4957,7 @@ "source_urls": [ "https://github.com/openai/codex/blob/main/codex-rs/core/src/plugins/manifest.rs" ], - "verified_on": "2026-04-01", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex", "version_range": ">=0.117.0" @@ -4985,7 +4985,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-03-28", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -5013,7 +5013,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-03-28", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -5041,7 +5041,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-03-28", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -5069,7 +5069,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-03-28", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -5097,7 +5097,7 @@ "source_urls": [ "https://developers.openai.com/codex/" ], - "verified_on": "2026-03-28", + "verified_on": "2026-04-22", "applies_to": { "tool": "codex" }, @@ -12237,4 +12237,4 @@ } ] } -} +} \ No newline at end of file diff --git a/website/docs/rules/generated/cdx-000.md b/website/docs/rules/generated/cdx-000.md index cf09bb845..62abe81bd 100644 --- a/website/docs/rules/generated/cdx-000.md +++ b/website/docs/rules/generated/cdx-000.md @@ -13,7 +13,7 @@ keywords: ["CDX-000", "toml parse error", "codex cli", "validation", "agnix", "l - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-02-09` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-001.md b/website/docs/rules/generated/cdx-001.md index 2c702d678..85a6b644c 100644 --- a/website/docs/rules/generated/cdx-001.md +++ b/website/docs/rules/generated/cdx-001.md @@ -13,7 +13,7 @@ keywords: ["CDX-001", "invalid approval mode", "codex cli", "validation", "agnix - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `Yes (unsafe)` -- **Verified On**: `2026-02-07` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-002.md b/website/docs/rules/generated/cdx-002.md index 83fe4fd0c..42da52efa 100644 --- a/website/docs/rules/generated/cdx-002.md +++ b/website/docs/rules/generated/cdx-002.md @@ -13,7 +13,7 @@ keywords: ["CDX-002", "invalid full auto error mode", "codex cli", "validation", - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `Yes (unsafe)` -- **Verified On**: `2026-02-07` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-003.md b/website/docs/rules/generated/cdx-003.md index c2945712e..b3ed9d251 100644 --- a/website/docs/rules/generated/cdx-003.md +++ b/website/docs/rules/generated/cdx-003.md @@ -13,7 +13,7 @@ keywords: ["CDX-003", "agents.override.md in version control", "codex cli", "val - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-02-07` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-004.md b/website/docs/rules/generated/cdx-004.md index 7bd54d5e1..cb70b3629 100644 --- a/website/docs/rules/generated/cdx-004.md +++ b/website/docs/rules/generated/cdx-004.md @@ -13,7 +13,7 @@ keywords: ["CDX-004", "unknown config key", "codex cli", "validation", "agnix", - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `Yes (safe)` -- **Verified On**: `2026-02-14` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-005.md b/website/docs/rules/generated/cdx-005.md index 761155e79..2c4c29bd0 100644 --- a/website/docs/rules/generated/cdx-005.md +++ b/website/docs/rules/generated/cdx-005.md @@ -13,7 +13,7 @@ keywords: ["CDX-005", "project_doc_max_bytes exceeds limit", "codex cli", "valid - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-02-14` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-006.md b/website/docs/rules/generated/cdx-006.md index 6bbb9e294..666ceffd1 100644 --- a/website/docs/rules/generated/cdx-006.md +++ b/website/docs/rules/generated/cdx-006.md @@ -13,7 +13,7 @@ keywords: ["CDX-006", "invalid project_doc_fallback_filenames", "codex cli", "va - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-02-26` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-ag-001.md b/website/docs/rules/generated/cdx-ag-001.md index 5203c8dbf..2fcf63179 100644 --- a/website/docs/rules/generated/cdx-ag-001.md +++ b/website/docs/rules/generated/cdx-ag-001.md @@ -13,7 +13,7 @@ keywords: ["CDX-AG-001", "empty agents.md for codex", "codex cli", "validation", - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-ag-002.md b/website/docs/rules/generated/cdx-ag-002.md index 19722c2a8..f4e0590bb 100644 --- a/website/docs/rules/generated/cdx-ag-002.md +++ b/website/docs/rules/generated/cdx-ag-002.md @@ -13,7 +13,7 @@ keywords: ["CDX-AG-002", "secrets in agents.md for codex", "codex cli", "validat - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-ag-003.md b/website/docs/rules/generated/cdx-ag-003.md index 102698cce..289361503 100644 --- a/website/docs/rules/generated/cdx-ag-003.md +++ b/website/docs/rules/generated/cdx-ag-003.md @@ -13,7 +13,7 @@ keywords: ["CDX-AG-003", "generic agents.md guidance for codex", "codex cli", "v - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-ag-004.md b/website/docs/rules/generated/cdx-ag-004.md index bc3038912..436b19660 100644 --- a/website/docs/rules/generated/cdx-ag-004.md +++ b/website/docs/rules/generated/cdx-ag-004.md @@ -13,7 +13,7 @@ keywords: ["CDX-AG-004", "agents.md exceeds size limit", "codex cli", "validatio - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-ag-005.md b/website/docs/rules/generated/cdx-ag-005.md index d6a8c5af8..2ca3dedb3 100644 --- a/website/docs/rules/generated/cdx-ag-005.md +++ b/website/docs/rules/generated/cdx-ag-005.md @@ -13,7 +13,7 @@ keywords: ["CDX-AG-005", "agents.md references missing file", "codex cli", "vali - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-ag-006.md b/website/docs/rules/generated/cdx-ag-006.md index a6e81fc16..b621def20 100644 --- a/website/docs/rules/generated/cdx-ag-006.md +++ b/website/docs/rules/generated/cdx-ag-006.md @@ -13,7 +13,7 @@ keywords: ["CDX-AG-006", "agents.md missing project context", "codex cli", "vali - **Category**: `Codex CLI` - **Normative Level**: `BEST_PRACTICE` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-ag-007.md b/website/docs/rules/generated/cdx-ag-007.md index cf081b494..47de24008 100644 --- a/website/docs/rules/generated/cdx-ag-007.md +++ b/website/docs/rules/generated/cdx-ag-007.md @@ -13,7 +13,7 @@ keywords: ["CDX-AG-007", "agents.md contradicts config.toml", "codex cli", "vali - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-app-001.md b/website/docs/rules/generated/cdx-app-001.md index f4d704065..5dfc8258d 100644 --- a/website/docs/rules/generated/cdx-app-001.md +++ b/website/docs/rules/generated/cdx-app-001.md @@ -13,7 +13,7 @@ keywords: ["CDX-APP-001", "invalid default_tools_approval_mode value", "codex cl - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-app-002.md b/website/docs/rules/generated/cdx-app-002.md index 60ba5885f..a2ef427ba 100644 --- a/website/docs/rules/generated/cdx-app-002.md +++ b/website/docs/rules/generated/cdx-app-002.md @@ -13,7 +13,7 @@ keywords: ["CDX-APP-002", "invalid skills configuration", "codex cli", "validati - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-app-003.md b/website/docs/rules/generated/cdx-app-003.md index 3225c7ac1..2ab8f08b1 100644 --- a/website/docs/rules/generated/cdx-app-003.md +++ b/website/docs/rules/generated/cdx-app-003.md @@ -13,7 +13,7 @@ keywords: ["CDX-APP-003", "invalid profile configuration", "codex cli", "validat - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-001.md b/website/docs/rules/generated/cdx-cfg-001.md index 317141514..b9746cd24 100644 --- a/website/docs/rules/generated/cdx-cfg-001.md +++ b/website/docs/rules/generated/cdx-cfg-001.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-001", "invalid approval_policy value", "codex cli", "validat - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-002.md b/website/docs/rules/generated/cdx-cfg-002.md index 72675c550..e0d804db2 100644 --- a/website/docs/rules/generated/cdx-cfg-002.md +++ b/website/docs/rules/generated/cdx-cfg-002.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-002", "invalid sandbox_mode value", "codex cli", "validation - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-003.md b/website/docs/rules/generated/cdx-cfg-003.md index c21f99288..de3efc4e2 100644 --- a/website/docs/rules/generated/cdx-cfg-003.md +++ b/website/docs/rules/generated/cdx-cfg-003.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-003", "invalid model_reasoning_effort value", "codex cli", " - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-004.md b/website/docs/rules/generated/cdx-cfg-004.md index 46203f133..110c102ba 100644 --- a/website/docs/rules/generated/cdx-cfg-004.md +++ b/website/docs/rules/generated/cdx-cfg-004.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-004", "invalid model_verbosity value", "codex cli", "validat - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-005.md b/website/docs/rules/generated/cdx-cfg-005.md index dd97a505c..70cfab8db 100644 --- a/website/docs/rules/generated/cdx-cfg-005.md +++ b/website/docs/rules/generated/cdx-cfg-005.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-005", "invalid personality value", "codex cli", "validation" - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-006.md b/website/docs/rules/generated/cdx-cfg-006.md index 951f83f5f..eec455a04 100644 --- a/website/docs/rules/generated/cdx-cfg-006.md +++ b/website/docs/rules/generated/cdx-cfg-006.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-006", "unknown codex config field", "codex cli", "validation - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-007.md b/website/docs/rules/generated/cdx-cfg-007.md index 64b87b452..6e28438b5 100644 --- a/website/docs/rules/generated/cdx-cfg-007.md +++ b/website/docs/rules/generated/cdx-cfg-007.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-007", "danger full access without acknowledgment", "codex cl - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-008.md b/website/docs/rules/generated/cdx-cfg-008.md index 1e02728d3..d6256792e 100644 --- a/website/docs/rules/generated/cdx-cfg-008.md +++ b/website/docs/rules/generated/cdx-cfg-008.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-008", "invalid shell_environment_policy.inherit value", "cod - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-009.md b/website/docs/rules/generated/cdx-cfg-009.md index 74c11ae94..a25378ed7 100644 --- a/website/docs/rules/generated/cdx-cfg-009.md +++ b/website/docs/rules/generated/cdx-cfg-009.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-009", "invalid mcp server structure in codex config", "codex - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-010.md b/website/docs/rules/generated/cdx-cfg-010.md index 71156c4d4..2c2e24540 100644 --- a/website/docs/rules/generated/cdx-cfg-010.md +++ b/website/docs/rules/generated/cdx-cfg-010.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-010", "hardcoded secret in codex config", "codex cli", "vali - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-011.md b/website/docs/rules/generated/cdx-cfg-011.md index 00be27ae9..ef65fd586 100644 --- a/website/docs/rules/generated/cdx-cfg-011.md +++ b/website/docs/rules/generated/cdx-cfg-011.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-011", "invalid feature flag name", "codex cli", "validation" - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-012.md b/website/docs/rules/generated/cdx-cfg-012.md index caedf534e..6eb9767ae 100644 --- a/website/docs/rules/generated/cdx-cfg-012.md +++ b/website/docs/rules/generated/cdx-cfg-012.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-012", "invalid cli_auth_credentials_store value", "codex cli - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-03` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-013.md b/website/docs/rules/generated/cdx-cfg-013.md index 1beed346d..4eaa83906 100644 --- a/website/docs/rules/generated/cdx-cfg-013.md +++ b/website/docs/rules/generated/cdx-cfg-013.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-013", "invalid sandbox_workspace_write mode", "codex cli", " - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-014.md b/website/docs/rules/generated/cdx-cfg-014.md index 23c7fc2ef..60c2eb962 100644 --- a/website/docs/rules/generated/cdx-cfg-014.md +++ b/website/docs/rules/generated/cdx-cfg-014.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-014", "invalid model value", "codex cli", "validation", "agn - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-015.md b/website/docs/rules/generated/cdx-cfg-015.md index 6709db53d..03baa4114 100644 --- a/website/docs/rules/generated/cdx-cfg-015.md +++ b/website/docs/rules/generated/cdx-cfg-015.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-015", "invalid model_provider value", "codex cli", "validati - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-016.md b/website/docs/rules/generated/cdx-cfg-016.md index 3de2221b9..b6f023429 100644 --- a/website/docs/rules/generated/cdx-cfg-016.md +++ b/website/docs/rules/generated/cdx-cfg-016.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-016", "invalid model_reasoning_summary value", "codex cli", - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-017.md b/website/docs/rules/generated/cdx-cfg-017.md index c1ea34b7e..7f13acc82 100644 --- a/website/docs/rules/generated/cdx-cfg-017.md +++ b/website/docs/rules/generated/cdx-cfg-017.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-017", "invalid history configuration", "codex cli", "validat - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-018.md b/website/docs/rules/generated/cdx-cfg-018.md index e3e22c067..6c6e94bc5 100644 --- a/website/docs/rules/generated/cdx-cfg-018.md +++ b/website/docs/rules/generated/cdx-cfg-018.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-018", "invalid tui configuration", "codex cli", "validation" - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-019.md b/website/docs/rules/generated/cdx-cfg-019.md index 9dec36f35..ac45f11d2 100644 --- a/website/docs/rules/generated/cdx-cfg-019.md +++ b/website/docs/rules/generated/cdx-cfg-019.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-019", "invalid file_opener value", "codex cli", "validation" - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-020.md b/website/docs/rules/generated/cdx-cfg-020.md index 2a2436b71..377df12d3 100644 --- a/website/docs/rules/generated/cdx-cfg-020.md +++ b/website/docs/rules/generated/cdx-cfg-020.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-020", "invalid mcp oauth config", "codex cli", "validation", - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-021.md b/website/docs/rules/generated/cdx-cfg-021.md index 0bf04f1bf..fa786abfd 100644 --- a/website/docs/rules/generated/cdx-cfg-021.md +++ b/website/docs/rules/generated/cdx-cfg-021.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-021", "invalid model_context_window value", "codex cli", "va - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-022.md b/website/docs/rules/generated/cdx-cfg-022.md index 497dcb08e..93fd8ed44 100644 --- a/website/docs/rules/generated/cdx-cfg-022.md +++ b/website/docs/rules/generated/cdx-cfg-022.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-022", "invalid model_auto_compact_token_limit value", "codex - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-03-06` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-023.md b/website/docs/rules/generated/cdx-cfg-023.md index 8efa87427..1b75e2121 100644 --- a/website/docs/rules/generated/cdx-cfg-023.md +++ b/website/docs/rules/generated/cdx-cfg-023.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-023", "invalid approval policy sub-field", "codex cli", "val - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `Yes (safe)` -- **Verified On**: `2026-03-28` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-024.md b/website/docs/rules/generated/cdx-cfg-024.md index f5589a0df..18cbfd4c6 100644 --- a/website/docs/rules/generated/cdx-cfg-024.md +++ b/website/docs/rules/generated/cdx-cfg-024.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-024", "invalid approvals reviewer value", "codex cli", "vali - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `Yes (unsafe)` -- **Verified On**: `2026-03-28` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-025.md b/website/docs/rules/generated/cdx-cfg-025.md index 22c790246..81c8bd9e9 100644 --- a/website/docs/rules/generated/cdx-cfg-025.md +++ b/website/docs/rules/generated/cdx-cfg-025.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-025", "invalid service tier value", "codex cli", "validation - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `Yes (unsafe)` -- **Verified On**: `2026-03-28` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-026.md b/website/docs/rules/generated/cdx-cfg-026.md index 95de3888c..034465c6d 100644 --- a/website/docs/rules/generated/cdx-cfg-026.md +++ b/website/docs/rules/generated/cdx-cfg-026.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-026", "invalid network permission field", "codex cli", "vali - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `Yes (safe)` -- **Verified On**: `2026-03-28` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-cfg-027.md b/website/docs/rules/generated/cdx-cfg-027.md index 2b2d0cc29..e5e07c2ad 100644 --- a/website/docs/rules/generated/cdx-cfg-027.md +++ b/website/docs/rules/generated/cdx-cfg-027.md @@ -13,7 +13,7 @@ keywords: ["CDX-CFG-027", "invalid windows sandbox value", "codex cli", "validat - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `Yes (unsafe)` -- **Verified On**: `2026-03-28` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-001.md b/website/docs/rules/generated/cdx-pl-001.md index 1cc79d062..d5c0904b0 100644 --- a/website/docs/rules/generated/cdx-pl-001.md +++ b/website/docs/rules/generated/cdx-pl-001.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-001", "codex plugin manifest location", "codex cli", "validat - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-002.md b/website/docs/rules/generated/cdx-pl-002.md index 44240bea4..aff7113b0 100644 --- a/website/docs/rules/generated/cdx-pl-002.md +++ b/website/docs/rules/generated/cdx-pl-002.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-002", "invalid json in plugin manifest", "codex cli", "valida - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-003.md b/website/docs/rules/generated/cdx-pl-003.md index 4cadbd757..e988508a5 100644 --- a/website/docs/rules/generated/cdx-pl-003.md +++ b/website/docs/rules/generated/cdx-pl-003.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-003", "missing or empty plugin name", "codex cli", "validatio - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `Yes (unsafe)` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-004.md b/website/docs/rules/generated/cdx-pl-004.md index 6004cfd4f..547faeebe 100644 --- a/website/docs/rules/generated/cdx-pl-004.md +++ b/website/docs/rules/generated/cdx-pl-004.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-004", "invalid plugin name characters", "codex cli", "validat - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-005.md b/website/docs/rules/generated/cdx-pl-005.md index e79a6c626..81c8360f4 100644 --- a/website/docs/rules/generated/cdx-pl-005.md +++ b/website/docs/rules/generated/cdx-pl-005.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-005", "component path missing ./ prefix", "codex cli", "valid - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `Yes (safe)` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-006.md b/website/docs/rules/generated/cdx-pl-006.md index e13544dd1..1dc4c21ea 100644 --- a/website/docs/rules/generated/cdx-pl-006.md +++ b/website/docs/rules/generated/cdx-pl-006.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-006", "component path directory traversal", "codex cli", "val - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-007.md b/website/docs/rules/generated/cdx-pl-007.md index 840f04b87..8ca6d86b6 100644 --- a/website/docs/rules/generated/cdx-pl-007.md +++ b/website/docs/rules/generated/cdx-pl-007.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-007", "component path empty relative", "codex cli", "validati - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-008.md b/website/docs/rules/generated/cdx-pl-008.md index 3d6e24d7e..ce4c7a044 100644 --- a/website/docs/rules/generated/cdx-pl-008.md +++ b/website/docs/rules/generated/cdx-pl-008.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-008", "too many default prompts", "codex cli", "validation", - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-009.md b/website/docs/rules/generated/cdx-pl-009.md index 0b80b8b5c..d9272e728 100644 --- a/website/docs/rules/generated/cdx-pl-009.md +++ b/website/docs/rules/generated/cdx-pl-009.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-009", "default prompt too long", "codex cli", "validation", " - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-010.md b/website/docs/rules/generated/cdx-pl-010.md index d9bbe55d1..443f87c8c 100644 --- a/website/docs/rules/generated/cdx-pl-010.md +++ b/website/docs/rules/generated/cdx-pl-010.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-010", "empty default prompt entry", "codex cli", "validation" - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-011.md b/website/docs/rules/generated/cdx-pl-011.md index b35fe4df5..4b32a0df3 100644 --- a/website/docs/rules/generated/cdx-pl-011.md +++ b/website/docs/rules/generated/cdx-pl-011.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-011", "invalid interface url", "codex cli", "validation", "ag - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-012.md b/website/docs/rules/generated/cdx-pl-012.md index e3a96f7ec..1f1f6eb38 100644 --- a/website/docs/rules/generated/cdx-pl-012.md +++ b/website/docs/rules/generated/cdx-pl-012.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-012", "invalid asset path", "codex cli", "validation", "agnix - **Category**: `Codex CLI` - **Normative Level**: `MUST` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-013.md b/website/docs/rules/generated/cdx-pl-013.md index 6b47ef2da..5360fa773 100644 --- a/website/docs/rules/generated/cdx-pl-013.md +++ b/website/docs/rules/generated/cdx-pl-013.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-013", "unsupported hooks field", "codex cli", "validation", " - **Category**: `Codex CLI` - **Normative Level**: `SHOULD` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability diff --git a/website/docs/rules/generated/cdx-pl-014.md b/website/docs/rules/generated/cdx-pl-014.md index fe0636ae4..83dbac305 100644 --- a/website/docs/rules/generated/cdx-pl-014.md +++ b/website/docs/rules/generated/cdx-pl-014.md @@ -13,7 +13,7 @@ keywords: ["CDX-PL-014", "missing description", "codex cli", "validation", "agni - **Category**: `Codex CLI` - **Normative Level**: `BEST_PRACTICE` - **Auto-Fix**: `No` -- **Verified On**: `2026-04-01` +- **Verified On**: `2026-04-22` ## Applicability From f870b9f571ad1c999f3b9e5b287098b16671f694 Mon Sep 17 00:00:00 2001 From: Avi Fenesh Date: Thu, 23 Apr 2026 03:29:56 +0300 Subject: [PATCH 2/3] fix(codex): TOML CDX-004 path also needs the 8 v0.122 keys + better test Reviewer feedback (PR #758 round 1, Copilot - both spot-on): #1: My initial fix only updated KNOWN_CONFIG_TOP_LEVEL_KEYS in rules/codex.rs (the JSON/YAML config validation path). But CDX-004 (the rule that fires for unknown TOML top-level keys, which is the primary path users hit for .codex/config.toml) uses a SEPARATE allow-list: KNOWN_TOP_LEVEL_KEYS in schemas/codex.rs. Without this additional fix, agnix would still false-positive CDX-004 on every affected TOML config. Added all 8 keys to schemas::codex::KNOWN_TOP_LEVEL_KEYS: - experimental_realtime_start_instructions - experimental_realtime_ws_startup_context - include_apps_instructions - include_environment_context - include_permissions_instructions - marketplaces - realtime - tool_suggest Also added 'realtime' and 'marketplaces' to KNOWN_TABLE_KEYS since upstream allows both inline values and TOML tables ([realtime] / [[marketplaces]]). #2: My regression test was vacuous. validate_config() enables CDX-004 by default, and the skip_top_level branch (rules/codex.rs:1164) makes CDX-CFG-006 silently skip top-level TOML keys when CDX-004 is active. So my test passed even without any code change. Renamed and rewrote (test_codex_v0_122_top_level_keys_accepted) to assert against CDX-004 with two configs: (a) inline-value form using all 8 keys, (b) section-table form for [realtime] and [[marketplaces]]. The test now genuinely fails without the schemas/codex.rs fix. CHANGELOG updated to mention both files and the CDX-004 primary path. Verified: cargo clippy --workspace --all-targets --all-features -- -D warnings clean; 3444 lib tests pass; rules.json parity tests pass. --- CHANGELOG.md | 2 +- crates/agnix-core/src/rules/codex.rs | 39 ++++++++++++++++++++------ crates/agnix-core/src/schemas/codex.rs | 18 ++++++++++++ 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 923b1804c..03caa3d4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Docusaurus** - bumped `@docusaurus/core` and `@docusaurus/preset-classic` from 3.9.2 to 3.10.0. ### Fixed -- **Codex CLI rust-v0.118.0 -> rust-v0.122.0 catch-up** (#747) - upstream `config-schema.json` (verified 2026-04-22) gained 8 new top-level keys (`experimental_realtime_start_instructions`, `experimental_realtime_ws_startup_context`, `include_apps_instructions`, `include_environment_context`, `include_permissions_instructions`, `marketplaces`, `realtime`, `tool_suggest`). Without this fix, agnix would false-positive CDX-CFG-006 (unknown top-level config key) on any current Codex `config.toml` that uses them. Added all 8 to `KNOWN_CONFIG_TOP_LEVEL_KEYS` in `crates/agnix-core/src/rules/codex.rs` plus a regression test. Documentation: bumped `verified_on` for all 58 CDX-* rules to 2026-04-22; bumped `RESEARCH-TRACKING.md` "Last Reviewed" for Codex CLI from 2026-02-05 to 2026-04-22. Verified MCP server config (`env`, `env_vars`), AGENTS.md discovery refactor (#18035), filesystem deny-read globs (#15979), and PermissionRequest hooks (#17563) require no agnix changes - their upstream effects are runtime-only, additive, or already covered by existing validators. +- **Codex CLI rust-v0.118.0 -> rust-v0.122.0 catch-up** (#747) - upstream `config-schema.json` (verified 2026-04-22) gained 8 new top-level keys (`experimental_realtime_start_instructions`, `experimental_realtime_ws_startup_context`, `include_apps_instructions`, `include_environment_context`, `include_permissions_instructions`, `marketplaces`, `realtime`, `tool_suggest`). Without this fix, agnix would false-positive **CDX-004** (unknown TOML top-level key, primary path for `.codex/config.toml`) and CDX-CFG-006 (its JSON/YAML equivalent) on any current Codex config that uses them. Added all 8 to `KNOWN_TOP_LEVEL_KEYS` in `crates/agnix-core/src/schemas/codex.rs` (the TOML path used by CDX-004) AND `KNOWN_CONFIG_TOP_LEVEL_KEYS` in `crates/agnix-core/src/rules/codex.rs` (the JSON/YAML path). Also added `realtime` and `marketplaces` to `KNOWN_TABLE_KEYS` since both can appear as TOML tables (`[realtime]`, `[[marketplaces]]`). Plus a regression test that runs an inline-table config and a section-table config and asserts zero CDX-004 diagnostics. Documentation: bumped `verified_on` for all 58 CDX-* rules to 2026-04-22; bumped `RESEARCH-TRACKING.md` "Last Reviewed" for Codex CLI from 2026-02-05 to 2026-04-22. Verified MCP server config (`env`, `env_vars`), AGENTS.md discovery refactor (#18035), filesystem deny-read globs (#15979), and PermissionRequest hooks (#17563) require no agnix changes - their upstream effects are runtime-only, additive, or already covered by existing validators. - **Claude Code v2.1.90 -> v2.1.117 catch-up** (#745) - `Monitor` (the new built-in tool added in v2.1.98 for streaming events from background scripts) is now in `KNOWN_AGENT_TOOLS`, so `tools: [Monitor]` in agent frontmatter no longer false-positives CC-AG-009/CC-AG-010. `xhigh` (the new effort level for Opus 4.7, added in v2.1.111) is now in `schemas::skill::VALID_EFFORT_LEVELS` (the single source of truth shared by both agent CC-AG-014 and skill CC-SK-018 validation), so `effort: xhigh` no longer false-positives in either rule. The agent `color` field (display color for the task list and transcript) is now a typed field on `AgentSchema` and listed in `KNOWN_AGENT_FIELDS`, so `color: blue` no longer false-positives CC-AG-019. Documentation: bumped `verified_on` for CC-AG-009/010/011/014/019 and CC-SK-018 to 2026-04-22; added a single scope note at the top of the `CLAUDE CODE RULES (SUBAGENTS)` section in `VALIDATION-RULES.md` that agent-frontmatter `hooks` and `mcpServers` are loaded for both subagent spawning and `--agent` main-thread sessions (v2.1.116/v2.1.117); bumped `RESEARCH-TRACKING.md` "Last Reviewed" for Claude Code from 2026-02-05 to 2026-04-22. - **Clippy errors under Rust 1.95** - collapsed nested `if` blocks into match guards in `kiro_steering.rs`, `roo.rs`, and `windsurf.rs`, and switched `fixes.rs` to `sort_by_key` with `Reverse`. Resolves `collapsible_match` and `unnecessary_sort_by` lints newly enforced on stable 1.95, unblocking CI on `main` and all open PRs. - **`[files].exclude` silently half-worked** (#722) - previously this filter ran at `resolve_file_type`, which skipped per-file validators but left project-level rules (AGM-006, XP-004/005/006) collecting vendored paths by filename during the walk. A vendored `AGENTS.md` would still fire "Nested AGENTS.md" even when excluded. `[files].exclude` now joins the walker filter alongside top-level `exclude`, so both filters share one "don't look at this path" semantic and cross-file rules honour it too. diff --git a/crates/agnix-core/src/rules/codex.rs b/crates/agnix-core/src/rules/codex.rs index 3d16e0d1c..d8702823f 100644 --- a/crates/agnix-core/src/rules/codex.rs +++ b/crates/agnix-core/src/rules/codex.rs @@ -3110,12 +3110,15 @@ name = "test" } #[test] - fn test_cdx_cfg_006_codex_v0_122_keys_accepted() { + fn test_codex_v0_122_top_level_keys_accepted() { // 8 top-level keys present in upstream config-schema.json (verified - // 2026-04-22) but missing from KNOWN_CONFIG_TOP_LEVEL_KEYS before this - // change. Ensure agnix doesn't false-positive on a config that uses - // every one of them. - let toml = r#" + // 2026-04-22) but missing from agnix's TOML allow-list before this + // change. CDX-004 is the rule that fires for unknown TOML top-level + // keys (CDX-CFG-006 explicitly skips top-level keys when CDX-004 is + // enabled, so asserting against CDX-CFG-006 here would be vacuous). + // Two of the keys (marketplaces, realtime) can also appear as TOML + // tables; covered by the second config below. + let toml_inline = r#" experimental_realtime_start_instructions = "hi" experimental_realtime_ws_startup_context = "ctx" include_apps_instructions = true @@ -3125,14 +3128,34 @@ marketplaces = [] realtime = {} tool_suggest = "off" "#; - let diagnostics = validate_config(toml); + let diagnostics = validate_config(toml_inline); let unknown: Vec<_> = diagnostics .iter() - .filter(|d| d.rule == "CDX-CFG-006") + .filter(|d| d.rule == "CDX-004") .collect(); assert!( unknown.is_empty(), - "v0.122 top-level keys should not trigger CDX-CFG-006, got: {:?}", + "v0.122 top-level keys should not trigger CDX-004, got: {:?}", + unknown + ); + + // Section variants: [realtime] and [[marketplaces]] tables + let toml_tables = r#" +[realtime] +ws_url = "wss://example" + +[[marketplaces]] +name = "official" +url = "https://example.com/marketplace" +"#; + let diagnostics = validate_config(toml_tables); + let unknown: Vec<_> = diagnostics + .iter() + .filter(|d| d.rule == "CDX-004") + .collect(); + assert!( + unknown.is_empty(), + "v0.122 [realtime] and [[marketplaces]] tables should not trigger CDX-004, got: {:?}", unknown ); } diff --git a/crates/agnix-core/src/schemas/codex.rs b/crates/agnix-core/src/schemas/codex.rs index bdeb4b59f..8f4cb12d9 100644 --- a/crates/agnix-core/src/schemas/codex.rs +++ b/crates/agnix-core/src/schemas/codex.rs @@ -84,6 +84,20 @@ pub const KNOWN_TOP_LEVEL_KEYS: &[&str] = &[ // Experimental "experimental_use_unified_exec_tool", "experimental_use_freeform_apply_patch", + "experimental_realtime_start_instructions", + "experimental_realtime_ws_startup_context", + // Instruction-section toggles (added in Codex rust-v0.122.0 catch-up) + "include_apps_instructions", + "include_environment_context", + "include_permissions_instructions", + // Plugin marketplaces (added in Codex rust-v0.122.0 catch-up; can also be + // present as a TOML table) + "marketplaces", + // Realtime config (added in Codex rust-v0.122.0 catch-up; can also be + // present as a TOML table) + "realtime", + // Tool suggestions toggle (added in Codex rust-v0.122.0 catch-up) + "tool_suggest", // Legacy camelCase keys (backwards compat) "approvalMode", "fullAutoErrorMode", @@ -104,6 +118,10 @@ pub const KNOWN_TABLE_KEYS: &[&str] = &[ "skills", "feedback", "notice", + // Added in Codex rust-v0.122.0 catch-up - both can appear as TOML tables + // ([realtime] / [[marketplaces]]) in addition to inline values. + "realtime", + "marketplaces", ]; /// An unknown key found in config From 70c9e11220e87f66c40b306ba6971cb16c02a723 Mon Sep 17 00:00:00 2001 From: Avi Fenesh Date: Thu, 23 Apr 2026 03:35:59 +0300 Subject: [PATCH 3/3] style: cargo fmt the round-1 review fix CI's format check (cargo fmt --check) caught two compact-line opportunities in the rewritten regression test. Mechanical reformat, no behavior change. Net: -10 LOC. Same lesson as PR #757 commit 30accd2 - run cargo fmt --all after every code edit, even small ones. --- crates/agnix-core/src/rules/codex.rs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/crates/agnix-core/src/rules/codex.rs b/crates/agnix-core/src/rules/codex.rs index d8702823f..a1758c8f5 100644 --- a/crates/agnix-core/src/rules/codex.rs +++ b/crates/agnix-core/src/rules/codex.rs @@ -3129,10 +3129,7 @@ realtime = {} tool_suggest = "off" "#; let diagnostics = validate_config(toml_inline); - let unknown: Vec<_> = diagnostics - .iter() - .filter(|d| d.rule == "CDX-004") - .collect(); + let unknown: Vec<_> = diagnostics.iter().filter(|d| d.rule == "CDX-004").collect(); assert!( unknown.is_empty(), "v0.122 top-level keys should not trigger CDX-004, got: {:?}", @@ -3149,10 +3146,7 @@ name = "official" url = "https://example.com/marketplace" "#; let diagnostics = validate_config(toml_tables); - let unknown: Vec<_> = diagnostics - .iter() - .filter(|d| d.rule == "CDX-004") - .collect(); + let unknown: Vec<_> = diagnostics.iter().filter(|d| d.rule == "CDX-004").collect(); assert!( unknown.is_empty(), "v0.122 [realtime] and [[marketplaces]] tables should not trigger CDX-004, got: {:?}",