Max Hsu and GitHub
bc894802ff
feat(installer): support project-local Codex installs ( #1531 ) ( #1551 )
...
Codex CLI has a first-class project config layer — `.codex/config.toml`
is layer 4 of the loader stack, above the user config at layer 6
(`codex-rs/config/src/loader/README.md` in openai/codex), and it landed
in openai/codex#8354 on 2025-12-22. The CodexTarget's "Codex has no
project-local config concept" note was therefore never accurate, and
`supportsLocation('local') === false` made Codex the one agent that
forces a machine-wide MCP install.
`mcp_servers` is not on the project layer's denylist (which strips base
URLs, model providers, `notify`, profiles and otel — settings repo
contents shouldn't choose), so a project-scoped `[mcp_servers.codegraph]`
is honored.
- Path helpers take a `Location`: global keeps `~/.codex/config.toml` +
`~/.codex/AGENTS.md`; local writes `<cwd>/.codex/config.toml` and the
project-root `<cwd>/AGENTS.md` — the same split the gemini and
opencode targets already use for their local layout.
- Drops the five `loc !== 'global'` early returns from detect, install,
uninstall, printConfig and describePaths.
- Local install returns a note that Codex only applies a project layer
in a project marked trusted; untrusted projects load the layer but
leave it disabled, so a silent success would be misleading.
- Refreshes the two doc comments that used Codex as the example of a
global-only target (now the Copilot CLI).
Tests: two new cases covering the local write layout, the trust note,
global config staying untouched, and local uninstall leaving the global
entry intact. Both fail against the previous implementation. The generic
per-target contract suite now also exercises codex at location=local.
2026-08-22 11:55:10 -05:00
..
2026-04-06 14:27:13 -05:00
2026-08-22 09:05:30 -07:00
2026-06-02 10:15:27 -05:00
2026-06-22 12:06:35 -05:00
2026-06-28 22:46:24 -05:00
2026-07-06 09:07:15 -05:00
2026-07-12 20:09:03 -05:00
2026-07-15 19:11:06 -05:00
2026-07-19 17:48:27 -05:00
2026-08-06 17:50:25 +09:00
2026-06-20 21:22:52 -05:00
2026-07-02 18:41:55 -05:00
2026-07-02 19:02:16 -05:00
2026-06-13 14:48:52 -05:00
2026-07-16 14:39:26 -05:00
2026-07-16 15:30:17 -05:00
2026-06-28 22:01:47 -05:00
2026-08-20 12:53:49 -05:00
2026-06-13 15:18:55 -05:00
2026-07-09 20:54:45 -05:00
2026-05-21 15:48:04 -05:00
2026-06-08 00:10:10 -04:00
2026-06-08 22:43:54 -04:00
2026-08-06 17:50:25 +09:00
2026-07-01 12:13:42 -05:00
2026-06-08 01:25:21 -04:00
2026-06-28 20:11:05 -05:00
2026-07-07 09:13:13 -05:00
2026-06-13 13:53:38 -05:00
2026-08-20 12:53:49 -05:00
2026-06-27 13:47:29 -05:00
2026-08-03 23:13:59 -05:00
2026-06-21 14:03:07 -05:00
2026-05-24 04:41:04 -05:00
2026-07-02 12:56:02 -05:00
2026-07-03 14:53:04 -05:00
2026-06-26 20:25:47 -05:00
2026-08-04 00:56:50 -05:00
2026-08-04 02:13:46 -05:00
2026-08-01 01:50:44 -05:00
2026-08-06 15:10:46 -05:00
2026-06-22 12:06:35 -05:00
2026-08-05 13:47:24 -05:00
2026-08-06 14:35:56 -05:00
2026-08-04 00:37:17 -05:00
2026-08-06 02:59:46 -05:00
2026-08-06 14:07:22 -05:00
2026-08-06 21:11:51 -05:00
2026-07-10 16:20:28 -05:00
2026-07-03 14:32:20 -05:00
2026-08-06 01:44:45 -05:00
2026-08-22 09:05:30 -07:00
2026-08-20 09:10:07 -07:00
2026-08-04 00:56:50 -05:00
2026-08-04 00:02:45 -05:00
2026-08-06 03:45:28 -05:00
2026-06-28 22:23:35 -05:00
2026-08-05 13:24:06 -05:00
2026-06-22 12:06:35 -05:00
2026-06-06 11:02:59 -04:00
2026-06-22 16:16:23 -05:00
2026-08-22 11:53:36 -05:00
2026-05-26 02:14:00 -05:00
2026-06-13 09:48:44 -05:00
2026-07-16 16:11:24 -05:00
2026-08-20 12:53:49 -05:00
2026-07-07 14:17:16 -05:00
2026-08-22 11:53:26 -05:00
2026-07-02 17:05:51 -05:00
2026-08-01 01:36:07 -05:00
2026-08-06 04:54:05 -05:00
2026-08-03 23:13:59 -05:00
2026-05-28 23:41:11 -05:00
2026-08-22 11:53:33 -05:00
2026-05-20 10:32:08 -05:00
2026-07-16 14:52:11 -05:00
2026-06-22 18:16:11 -05:00
2026-07-10 03:42:30 -05:00
2026-07-01 13:37:20 -05:00
2026-08-20 09:10:07 -07:00
2026-07-07 10:11:58 -05:00
2026-07-07 13:01:38 -05:00
2026-06-29 23:15:41 -05:00
2026-06-26 20:25:47 -05:00
2026-06-29 23:35:50 -05:00
2026-08-22 11:55:10 -05:00
2026-05-28 15:13:23 -05:00
2026-05-20 18:36:18 -05:00
2026-06-02 14:23:33 -05:00
2026-07-17 16:56:41 -05:00
2026-07-20 13:46:12 -05:00
2026-07-20 19:55:48 -05:00
2026-07-20 19:55:48 -05:00
2026-07-20 17:33:18 -05:00
2026-07-20 18:42:14 -05:00
2026-07-20 16:08:22 -05:00
2026-07-20 18:28:28 -05:00
2026-08-20 12:16:51 -05:00
2026-07-20 15:44:13 -05:00
2026-07-20 00:08:09 -05:00
2026-07-20 19:02:52 -05:00
2026-07-20 19:02:52 -05:00
2026-07-20 17:09:12 -05:00
2026-07-17 01:28:21 -05:00
2026-06-21 09:45:24 -05:00
2026-08-20 12:53:49 -05:00
2026-07-10 08:25:23 -05:00
2026-06-22 12:41:26 -05:00
2026-06-22 11:31:49 -05:00
2026-08-20 12:53:49 -05:00
2026-05-25 23:48:10 -05:00
2026-05-26 15:39:48 -05:00
2026-06-02 17:49:15 -05:00
2026-05-25 19:54:56 -05:00
2026-06-26 19:31:12 -05:00
2026-05-20 11:35:13 -05:00
2026-08-01 01:12:52 -05:00
2026-06-22 12:06:35 -05:00
2026-07-07 08:45:12 -05:00
2026-06-20 13:23:16 -05:00
2026-06-27 15:47:31 -05:00
2026-06-23 12:57:47 -05:00
2026-06-20 22:34:24 -05:00
2026-07-16 16:01:08 -05:00
2026-07-07 09:46:22 -05:00
2026-08-22 11:54:27 -05:00
2026-07-06 12:41:32 -05:00
2026-06-22 12:06:35 -05:00
2026-05-21 15:48:04 -05:00
2026-05-21 15:48:04 -05:00
2026-05-31 19:05:40 -05:00
2026-07-07 08:45:12 -05:00
2026-06-02 10:15:27 -05:00
2026-06-20 15:17:31 -05:00
2026-07-06 14:20:19 -05:00
2026-08-20 12:53:49 -05:00
2026-07-10 15:47:57 -05:00
2026-06-20 20:30:13 -05:00
2026-06-26 20:25:47 -05:00
2026-08-03 23:13:59 -05:00
2026-05-26 03:25:06 -05:00
2026-06-24 14:48:16 -05:00
2026-08-22 09:05:30 -07:00
2026-07-08 23:18:23 -05:00
2026-06-21 11:35:12 -05:00
2026-06-06 11:02:59 -04:00
2026-06-20 14:45:51 -05:00
2026-08-20 12:36:22 -05:00
2026-07-10 17:37:20 -05:00
2026-08-07 21:23:06 -05:00
2026-07-20 20:11:31 -05:00
2026-06-06 11:02:59 -04:00
2026-06-20 19:23:37 -05:00
2026-06-22 12:06:35 -05:00
2026-05-07 20:35:49 -05:00
2026-08-03 23:13:59 -05:00
2026-07-02 17:23:54 -05:00
2026-06-21 01:32:33 -05:00
2026-06-20 22:00:43 -05:00
2026-05-21 15:48:04 -05:00
2026-07-07 08:45:12 -05:00
2026-07-06 09:07:15 -05:00
2026-06-11 12:04:51 -05:00
2026-05-07 22:03:33 -05:00
2026-07-19 17:48:27 -05:00
2026-07-02 17:11:19 -05:00
2026-05-26 02:14:00 -05:00
2026-05-26 02:14:00 -05:00
2026-06-02 10:15:27 -05:00
2026-08-06 04:45:37 -05:00
2026-08-20 12:53:49 -05:00
2026-07-16 18:07:51 -05:00
2026-07-08 23:18:23 -05:00
2026-06-23 11:26:23 -05:00
2026-06-11 14:48:11 -05:00
2026-08-22 11:55:01 -05:00
2026-06-13 12:35:18 -05:00
2026-07-10 17:36:47 -05:00
2026-07-15 19:11:06 -05:00
2026-06-16 12:16:00 -05:00
2026-06-20 20:08:34 -05:00
2026-06-20 20:49:06 -05:00
2026-07-17 11:27:30 -05:00
2026-07-31 21:38:38 -05:00
2026-07-15 19:44:09 -05:00
2026-05-21 18:06:02 -05:00
2026-07-21 12:09:31 -05:00
2026-06-28 19:35:17 -05:00