Skip to content

feat(acp): add session/set_config and stabilize list, delete and close#7984

Open
codefromthecrypt wants to merge 5 commits intomainfrom
adrian/sacp-11-config-option
Open

feat(acp): add session/set_config and stabilize list, delete and close#7984
codefromthecrypt wants to merge 5 commits intomainfrom
adrian/sacp-11-config-option

Conversation

@codefromthecrypt
Copy link
Collaborator

@codefromthecrypt codefromthecrypt commented Mar 18, 2026

Summary

This change stabilizes ACP session related functionality that is re-used across multiple ACP agents. This does so by adding the new unified session/set_config_option and formalizing existing support like session/list, session/delete and session/close with integration tests. To unlock this, it updates to the latest sacp lib as the prior revlocked us into old schema types.

ACP stabilized session/set_config_option as a unified config method, superseding session/set_mode and session/set_model.
Instead of separate modes and models fields in session/new, agents return a single config_options array that clients use to populate their UI and send changes back.

Here are some notable clients/IDEs that support deviations of this config:

  • Zed prefers set_config_option when agents advertise config_options, falls back otherwise
  • openclaw/acpx only uses set_config_option
  • codecompanion.nvim only uses session/set_mode

This updates goose acp to accept set_config_option and fall back to set_mode/set_model to support the above, taking care not to duplicate code.

Goose is also a client when using ACP providers (e.g. claude-acp, codex-acp). The provider now handles ConfigOptionUpdate notifications to sync local state, supporting the same patterns in the other direction.

Here are some notable agents that support deviations of this config:

We couldn't add this before due to revlock in sacp 10, not without manually writing JSON.
So this bumps to sacp 11 to get SetSessionConfigOptionRequest.
It also adds if_request routing and minor call-site updates.

Note: session/set_config_option also adds thought_level, but we return invalid_params until we figure out how to normalize thinking.

Session lifecycle methods (session/list, session/close) now use typed if_request dispatch via sacp's unstable feature flags. session/delete is a standard ACP method (RFD #395) not yet in the schema crate, so it remains in custom method dispatch until DeleteSessionRequest is added.

Goose as a client now sends session/close on shutdown to ACP agents that advertise sessionCapabilities.close. This lets agents free resources:

  • claude-agent-acp cancels pending work and removes the session from memory
  • codex-acp shuts down the thread and removes it from the thread manager

The #[custom_method] macro no longer forces a _goose/ prefix on all methods. Standard ACP methods like session/delete use their standard names so clients don't need goose-specific knowledge. Goose-only methods (_goose/tools, _goose/config/extensions, etc.) keep their prefix.

All ACP providers now use a single sentinel "current" instead of per-provider default model strings ("default", "gpt-5.4", "auto-gemini-3"). At connect time, goose resolves it to the agent's actual current_model_id from session/new. This fixes a clash where claude-acp's old default "default" could overwrite the user's real model choice, and eliminates per-provider constants that drift as agents change their model names.

Notable bugs fixed along the way:

  • ACP agents leaked resources on shutdown — goose never closed sessions before exiting
  • ACP Editors/Clients didn't see model changes — no notification was sent back
  • Switching modes had no effect on ACP providers — goose sent its own mode names, not the agent's
  • Switching models had no effect on ACP providers — model changes were never forwarded downstream
  • Unhelpful errors on request log failures — bare OS errors; switched to fs_err

Type of Change

  • Feature
  • Refactor / Code quality
  • Tests

AI Assistance

  • This PR was created or reviewed with AI assistance

Testing

Integration tests

ACP provider updates:

$ brew uninstall codex-acp claude-agent-acp gemini-cli 2>/dev/null
$ source bin/activate-hermit
$ npm install -g @zed-industries/claude-agent-acp @zed-industries/codex-acp @google/gemini-cli

Scoped provider tests (includes claude-code to prove sentinel check doesn't break non-ACP agentic providers):

$ cargo test --test providers -- test_claude_code_provider test_claude_acp_provider test_codex_acp_provider test_gemini_acp_provider --nocapture
running 4 tests
test test_gemini_acp_provider ... ok
=== claude-acp::model_listing ===
&models = ["default", "sonnet", "haiku"]
=== codex-acp::model_listing ===
&models = ["gpt-5.4/low", "gpt-5.4/medium", "gpt-5.4/high", "gpt-5.4/xhigh", "gpt-5.4-mini/low", ...]
=== claude-code::model_listing ===
&models = ["default", "sonnet", "haiku"]
=== claude-acp::basic_response === Hello!
=== codex-acp::basic_response === Hello!
=== claude-code::basic_response === Hello! 👋
=== claude-acp::tool_usage === test-uuid-12345-67890
=== codex-acp::tool_usage === test-uuid-12345-67890
=== claude-code::tool_usage === test-uuid-12345-67890
=== claude-acp::image_content === hello goose! this is a test image.
=== codex-acp::image_content === hello goose! this is a test image.
=== claude-code::image_content === hello goose! this is a test image.
=== claude-acp::model_switch (default -> sonnet) === Hello!
=== codex-acp::model_switch (gpt-5.4/xhigh -> gpt-5.4-mini) === Hello!
=== claude-code::model_switch (default -> sonnet) === Hello!
=== claude-acp::permission_allow ===
=== codex-acp::permission_allow ===
=== claude-code::permission_allow ===
=== claude-acp::permission_deny ===
=== codex-acp::permission_deny ===
=== claude-code::permission_deny ===
test test_claude_acp_provider ... ok
test test_codex_acp_provider ... ok
test test_claude_code_provider ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 15 filtered out

============== Providers ==============
✅ claude-acp
✅ claude-code
✅ codex-acp
⏭️ gemini-acp
=======================================

Zed

Kill goose and clear state:

$ pkill -f goose
$ rm -rf ~/.local/state/goose/logs ~/.local/share/goose/sessions -rf ~/Library/Logs/Zed/ ~/Library/Application\ Support/Zed/threads/
$ just release-binary

Add to ~/.config/zed/settings.json:

"agent_servers": {
  "goose": {
    "type": "custom",
    "command": "/path/to/goose/target/release/goose",
    "args": ["acp", "--with-builtin", "developer"],
    "env": {
      "RUST_LOG": "debug,sacp=trace"
    },
  }
}
$ mkdir -p /tmp/test-sacp-upgrade
$ open -a /Applications/Zed.app /tmp/test-sacp-upgrade

Mode selection:

  1. Open Zed's agent panel. The mode selector (bottom bar, next to model selector) shows "auto" as the default.
  2. Click the mode selector and switch to "approve"
  3. Enter "Use the tree tool to list the current directory" and send it
  4. Zed should show a permission prompt (approve mode requires confirmation for tool calls)
  5. Verify in goose logs:
$ grep -h 'Received JSON-RPC.*set_config_option' ~/.local/state/goose/logs/cli/*/*.log                                                    
{"timestamp":"2026-03-19T10:11:09.669704Z","level":"TRACE","fields":{"message":"Received JSON-RPC message","message":"{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"session/set_config_option\",\"params\":{\"sessionId\":\"20260319_1\",\"configId\":\"mode\",\"value\":\"approve\"}}"},"target":"sacp::jsonrpc::transport_actor","span":{"name":"goose-acp","name":"connection"},"spans":[{"name":"goose-acp","name":"connection"}]}

Model selection:

  1. Click the model selector in the bottom left, switch to a different model
  2. Enter "say hello" and send it
  3. Verify in goose logs:
$ grep -h 'Received JSON-RPC.*set_config_option.*model' ~/.local/state/goose/logs/cli/*/*.log
{"timestamp":"2026-03-19T10:16:39.101618Z","level":"TRACE","fields":{"message":"Received JSON-RPC message","message":"{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"session/set_config_option\",\"params\":{\"sessionId\":\"20260319_1\",\"configId\":\"model\",\"value\":\"qwen3:4b\"}}"},"target":"sacp::jsonrpc::transport_actor","span":{"name":"goose-acp","name":"connection"},"spans":[{"name":"goose-acp","name":"connection"}]}

Model selection — set_config_option forwarding (claude-acp):

Replace the env in ~/.config/zed/settings.json with:

"env": {
  "RUST_LOG": "debug,sacp=trace",
  "GOOSE_PROVIDER": "claude-acp",
  "GOOSE_MODEL": "default"
},

Restart Zed:

$ rm -rf ~/.local/state/goose/logs ~/.local/share/goose/sessions ~/Library/Logs/Zed/ ~/Library/Application\ Support/Zed/threads/
$ open -a /Applications/Zed.app /tmp/test-sacp-upgrade
  1. Click the model selector in the bottom left, switch to "haiku"
  2. Enter "say hello" and send it
  3. Verify in goose logs:
$ grep -h 'Model switched' ~/.local/state/goose/logs/cli/*/*.log                                                                     
{"timestamp":"2026-03-19T12:16:55.129763Z","level":"INFO","fields":{"message":"Model switched","session_id":"20260319_2","model_id":"haiku"},"target":"goose_acp::server","span":{"counterpart":"Client","method":"session/set_config_option","name":"dispatch_dispatch"},"spans":[{"name":"goose-acp","name":"connection"},{"counterpart":"Client","method":"session/set_config_option","name":"dispatch_dispatch"}]}

Model selection — set_model fallback (gemini-cli):

Replace the env in ~/.config/zed/settings.json with:

"env": {
  "RUST_LOG": "debug,sacp=trace",
  "GOOSE_PROVIDER": "gemini-acp",
  "GOOSE_MODEL": "auto-gemini-3"
},

Restart Zed:

$ rm -rf ~/.local/state/goose/logs ~/.local/share/goose/sessions ~/Library/Logs/Zed/ ~/Library/Application\ Support/Zed/threads/
$ open -a /Applications/Zed.app /tmp/test-sacp-upgrade
  1. Click the model selector in the bottom left, switch to "gemini-2.5-flash"
  2. Enter "say hello" and send it
  3. Verify in goose logs:
$ grep -h 'Model switched' ~/.local/state/goose/logs/cli/*/*.log                                                                      
{"timestamp":"2026-03-19T12:22:07.805750Z","level":"INFO","fields":{"message":"Model switched","session_id":"20260319_1","model_id":"gemini-2.5-flash-lite"},"target":"goose_acp::server","span":{"counterpart":"Client","method":"session/set_config_option","name":"dispatch_dispatch"},"spans":[{"name":"goose-acp","name":"connection"},{"counterpart":"Client","method":"session/set_config_option","name":"dispatch_dispatch"}]}

Session list:

  1. Open Zed's agent panel, send "hello", then start a new thread and send "goodbye"
  2. Click the history icon in the agent panel header to open the Recent sidebar
  3. Both sessions should appear in the list
$ grep -h 'Received JSON-RPC.*session/list' ~/.local/state/goose/logs/cli/*/*.log
{"timestamp":"2026-03-19T10:22:44.303008Z","level":"TRACE","fields":{"message":"Received JSON-RPC message","message":"{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"session/list\",\"params\":{}}"},"target":"sacp::jsonrpc::transport_actor","span":{"name":"goose-acp","name":"connection"},"spans":[{"name":"goose-acp","name":"connection"}]}
{"timestamp":"2026-03-19T10:23:31.341284Z","level":"TRACE","fields":{"message":"Received JSON-RPC message","message":"{\"jsonrpc\":\"2.0\",\"id\":6,\"method\":\"session/list\",\"params\":{}}"},"target":"sacp::jsonrpc::transport_actor","span":{"name":"goose-acp","name":"connection"},"spans":[{"name":"goose-acp","name":"connection"}]}

acpx (set_config_option only client)

acpx uses session/set_config_option exclusively (no session/set_mode or session/set_model fallback).

Add to ~/.acpx/config.json:

{
  "agents": {
    "goose": { "command": "env RUST_LOG=debug,sacp=trace /path/to/goose/target/release/goose acp --with-builtin developer" }
  }
}

Kill goose and clear state:

$ pkill -f goose
$ rm -rf ~/.local/state/goose/logs ~/.local/share/goose/sessions
$ rm -rf ~/.acpx/sessions ~/.acpx/queues
$ just release-binary
$ mkdir -p /tmp/test-acpx && cd /tmp/test-acpx

Mode selection (approve mode denies tool calls):

$ npx acpx goose sessions new
[acpx] created session cwd (20260319_1)
[acpx] agent: goose
[acpx] cwd: /private/tmp/test-acpx
20260319_1
$ npx acpx goose set mode approve
config set: mode=approve (2 options)
$ npx acpx --deny-all goose "Use the tree tool to list the current directory"
[acpx] session cwd (20260319_1) · /private/tmp/test-acpx · agent needs reconnect
[client] initialize (running)
[client] session/load (running)
[tool] Tree (running)
[client] session/request_permission (running)
[tool] Tree (failed)
  output:
    The user has declined to run this tool. DO NOT attempt to call this tool again. If there are no alternative methods to proceed, clearly explain the situation and STOP.
--snip--
[done] end_turn
$ grep -h 'Received JSON-RPC.*set_config_option' ~/.local/state/goose/logs/cli/*/*.log
{"timestamp":"2026-03-19T09:36:29.614775Z","level":"TRACE","fields":{"message":"Received JSON-RPC message","message":"{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"session/set_config_option\",\"params\":{\"sessionId\":\"20260319_1\",\"configId\":\"mode\",\"value\":\"approve\"}}"},"target":"sacp::jsonrpc::transport_actor","span":{"name":"goose-acp","name":"connection"},"spans":[{"name":"goose-acp","name":"connection"}]}

Model selection:

$ npx acpx goose sessions new
[acpx] created session cwd (20260319_1)
[acpx] agent: goose
[acpx] cwd: /private/tmp/test-acpx
20260319_1
$ npx acpx goose set model qwen3:4b
config set: model=qwen3:4b (2 options)
$ npx acpx --approve-all goose "say hello"
[acpx] session cwd (20260319_1) · /private/tmp/test-acpx · agent needs reconnect
[client] initialize (running)
[client] session/load (running)
Hello!
[done] end_turn
$ grep -h 'Model switched' ~/.local/state/goose/logs/cli/*/*.log
{"timestamp":"2026-03-19T09:57:22.022422Z","level":"INFO","fields":{"message":"Model switched","session_id":"20260319_1","model_id":"qwen3:4b"},"target":"goose_acp::server","span":{"counterpart":"Client","method":"session/set_config_option","name":"dispatch_dispatch"},"spans":[{"name":"goose-acp","name":"connection"},{"counterpart":"Client","method":"session/set_config_option","name":"dispatch_dispatch"}]}

Goose CLI

Setup providers:

$ source bin/activate-hermit
$ npm install -g @zed-industries/claude-agent-acp @zed-industries/codex-acp @google/gemini-cli
$ just release-binary

Each test should be run with this cleanup first:

$ pkill -f goose
$ rm -rf ~/.local/state/goose/logs ~/.local/share/goose/sessions

session/close on shutdown (claude-acp):

  1. Run goose with claude-acp (which advertises sessionCapabilities.close)
  2. After goose exits, verify session/close was sent
$ GOOSE_PROVIDER=claude-acp GOOSE_MODEL=default RUST_LOG=debug,sacp=trace target/release/goose run -t "say hello"
Hello!
$ grep -h 'Sending JSON-RPC.*session/close' ~/.local/state/goose/logs/cli/*/*.log
{"timestamp":"2026-03-19T09:59:00.145987Z","level":"TRACE","fields":{"message":"Sending JSON-RPC message","message":"{\"jsonrpc\":\"2.0\",\"method\":\"session/close\",\"params\":{\"sessionId\":\"a187ebd8-6694-4c2e-a9f4-0753874479af\"},\"id\":\"4d9e82fb-ba2d-48b0-b74a-9e4605f7df62\"}"},"target":"sacp::jsonrpc::transport_actor"}
{"timestamp":"2026-03-19T09:59:00.148215Z","level":"TRACE","fields":{"message":"Sending JSON-RPC message","message":"{\"jsonrpc\":\"2.0\",\"method\":\"session/close\",\"params\":{\"sessionId\":\"c75516e2-2f0c-4392-b50a-23bd9f891eda\"},\"id\":\"94484cfa-7e49-4cd2-8f0b-7ce236bac9dc\"}"},"target":"sacp::jsonrpc::transport_actor"}

Goose UI

We need to use Goose UI for mid-session ACP provider verifications.

ACP provider updates:

$ brew uninstall codex-acp claude-agent-acp gemini-cli 2>/dev/null
$ source bin/activate-hermit
$ npm install -g @zed-industries/claude-agent-acp @zed-industries/codex-acp @google/gemini-cli

Each test should be run with this cleanup first:

$ pkill -f goose
$ rm -rf ~/.local/state/goose/logs ~/.local/share/goose/sessions /tmp/test-acp-mode
$ mkdir /tmp/test-acp-mode

set_config_option — mode (claude-acp):

  1. Launch: GOOSE_PROVIDER=claude-acp GOOSE_MODEL=default RUST_LOG=debug,sacp=trace just run-ui
  2. Send "say hello"
  3. Switch mode to "manual" via bottom bar mode selector
  4. Send "Write the text 'hello' to /tmp/test-acp-mode/test.txt": permission dialog should appear
  5. Verify goose forwarded set_config_option to claude-acp:
$ grep -h 'Sending JSON-RPC.*set_config_option' ~/.local/state/goose/logs/server/*/*.log
2026-03-19T11:00:04.138724Z TRACE sacp::jsonrpc::transport_actor: /Users/codefromthecrypt/oss/goose-2/.hermit/rust/git/checkouts/symposium-acp-77a83c5ecec52f5e/1b30972/src/sacp/src/jsonrpc/transport_actor.rs: Sending JSON-RPC message {"jsonrpc":"2.0","method":"session/set_config_option","params":{"sessionId":"a04a8781-199f-4168-a07b-67b95cf96a6a","configId":"mode","value":"default"},"id":"43bacf6b-606e-46c7-8412-eed0030d092b"}  

set_mode fallback — mode (gemini-cli):

  1. Launch: GOOSE_PROVIDER=gemini-acp GOOSE_MODEL=gemini-2.5-flash RUST_LOG=debug,sacp=trace just run-ui
  2. Send "say hello"
  3. Switch mode to "manual" via bottom bar mode selector
  4. Send "Write the text 'hello' to /tmp/test-acp-mode/test.txt": permission dialog should appear
  5. Verify goose sent session/set_mode (not set_config_option):
$ grep -h 'Sending JSON-RPC.*session/set_mode' ~/.local/state/goose/logs/server/*/*.log                                                   
2026-03-19T11:30:51.315497Z TRACE sacp::jsonrpc::transport_actor: /Users/codefromthecrypt/oss/goose-2/.hermit/rust/git/checkouts/symposium-acp-77a83c5ecec52f5e/1b30972/src/sacp/src/jsonrpc/transport_actor.rs: Sending JSON-RPC message {"jsonrpc":"2.0","method":"session/set_mode","params":{"sessionId":"92005e78-dc1a-4842-b1d6-2a5d00bfd40d","modeId":"default"},"id":"5ed9e3d6-0d9b-47b5-b86b-a90713b6e75a"}

Related Issues

Uses ACP #411

@codefromthecrypt codefromthecrypt changed the title feat(acp): add support for session/set_config and update to sacp 11 feat(acp): add session/set_config and stabilize list, delete and close Mar 18, 2026
@codefromthecrypt codefromthecrypt marked this pull request as ready for review March 18, 2026 08:57
chatgpt-codex-connector[bot]

This comment was marked as outdated.

@codefromthecrypt codefromthecrypt force-pushed the adrian/sacp-11-config-option branch from 8908db2 to a769e96 Compare March 18, 2026 09:32
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a769e96489

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@codefromthecrypt codefromthecrypt marked this pull request as draft March 18, 2026 13:01
@codefromthecrypt
Copy link
Collaborator Author

draft as while the bot comment was a red herring, in investigating it I found a different bug nearby where we aren't implementing model change, just it appears we are. I am going to fix that and re-open for review when done

@codefromthecrypt codefromthecrypt force-pushed the adrian/sacp-11-config-option branch 5 times, most recently from 3b4f484 to 34e59df Compare March 19, 2026 12:23
@codefromthecrypt codefromthecrypt marked this pull request as ready for review March 19, 2026 12:23
@codefromthecrypt
Copy link
Collaborator Author

This was quite possibly the most tedious manual Q/A I've ever done in goose. hope it helps!

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 34e59df074

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Signed-off-by: Adrian Cole <adrian@tetrate.io>
@codefromthecrypt codefromthecrypt force-pushed the adrian/sacp-11-config-option branch from 34e59df to 1cd9c46 Compare March 20, 2026 02:00
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1cd9c4616d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Signed-off-by: Adrian Cole <adrian@tetrate.io>
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b5c93809a9

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Signed-off-by: Adrian Cole <adrian@tetrate.io>
@codefromthecrypt
Copy link
Collaborator Author

I have spent 3 dauys on this and do not and won't spend unlimited time feeding copilot where if ever more than 50% accurate still wastes similar time and many rabbit holes. the last I did is the last revision

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ecf5badfe1

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Signed-off-by: Adrian Cole <adrian@tetrate.io>
Signed-off-by: Adrian Cole <adrian@tetrate.io>
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7a77cb4f17

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@michaelneale
Copy link
Collaborator

codex is getting a bit much I think... over confident and not always helpful

@DOsinga DOsinga added the needs_human label to set when a robot looks at a PR and can't handle it label Mar 20, 2026
@codefromthecrypt
Copy link
Collaborator Author

as usual, the last several comments of codex are either garbage or highly speculative. The only one not completely invalid is assuming agents (which it sometimes it conflates with clients), randomly change the model and we might not know about it, and wants even more complicated code to address, that too.

I'll look into it, but yes... this bot has been a cure worse than the disease.

@codefromthecrypt
Copy link
Collaborator Author

codefromthecrypt commented Mar 21, 2026

yes at the moment there is no open source agent that sends unsolicited model changes, even though mode sometimes is (escape planning mode) but that's also different than our permission mode (e.g. smart approve)

this is ready for a human review (I've had enough of codex and don't want to lose more time with it again on this PR)

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

Labels

needs_human label to set when a robot looks at a PR and can't handle it

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants