You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#286 is complete and closed. Agent v0.5.24 now has a production-verified generic Room-native ACP approval path using the built-in Claude Harness:
real Claude tool request
→ ACP session/request_permission
→ production Room approval card
→ Human Allow / Deny
→ exact native option returned
→ same Claude turn continues or is denied
This follow-up does not reopen the Room approval architecture. It tracks truthful per-Harness behavior and public documentation after #286.
Current compatibility matrix
Harness
Current status
Product interpretation
Claude
PRODUCTION VERIFIED
Real Room approval works end-to-end.
Codex
UPSTREAM LIMITATION
Native Codex can prompt under untrusted, but tested codex-acp 1.6.2 and 1.10.0 did not expose that path under current ACP mode presets. Track upstream rather than patching Free4Chat core.
OpenCode
ROOM APPROVAL VERIFIED
OpenCode 1.18.18 with an isolated ask policy emitted real ACP session/request_permission; production Room card, ordinary yes no-op, Allow once, Reject, same-turn continuation, and post-denial recovery all passed.
Hermes
NATIVE POLICY / NO CARD REQUIRED FOR TESTED PATH
Hermes Agent v0.21.0 contains ACP permission relay code, but the tested harmless command executed directly under its native/default policy with no local prompt and no ACP permission request. This is valid Harness behavior.
Pi
NATIVE/DEFAULT POLICY; NO ROOM APPROVAL REQUIRED IN CURRENT DOGFOOD
Pi executed the tested actions without interactive approval. This is acceptable: Free4Chat does not require every Harness to emit ACP approval requests.
custom ACP
implementation-defined
If it emits standard ACP session/request_permission, the generic Free4Chat path should work.
Update the public Agent permissions and approvals documentation so it states the shipped behavior truthfully:
Claude is production-verified for Room-native ACP approval;
other Harnesses may execute under their own native/default policy and therefore never show a Room card;
absence of a Room approval card is not automatically a Free4Chat failure;
Codex currently has a known upstream bridge/policy limitation;
Pi's current no-prompt/high-trust behavior is acceptable and does not need a fake approval layer;
OpenCode/Hermes remain compatibility evidence, not blockers for the generic feature.
Keep the docs user-oriented. Do not turn the public page into an implementation matrix dump.
Durable permission choices
The Claude production test also exposed an important presentation boundary:
Deny
Allow Once
Always Allow
A durable native option may have Harness-defined lifetime/storage semantics (session, project-local settings, user settings, etc.).
Free4Chat must not infer those semantics from the button label or kind. Public docs should say so explicitly.
The current generic feature remains correct because it forwards the exact native option id unchanged. A future UI improvement may display native scope/effect metadata when the Harness already provides a bounded safe presentation, but this issue does not require inventing a Free4Chat permission taxonomy.
Final probe results
OpenCode
OpenCode 1.18.18 was tested with opencode acp --pure and a disposable per-process OPENCODE_CONFIG_CONTENT policy setting bash, edit, and external_directory to ask.
A harmless command produced a real production Room approval card with the full command and native options Allow once / Always allow / Reject. Ordinary Human chat yes did not approve the pending request. Allow once resumed the same turn and produced the expected marker contents; Reject prevented a second marker from being created; a later ordinary turn succeeded.
Classification: ROOM APPROVAL VERIFIED.
Hermes
Hermes Agent v0.21.0 (2026.8.31) was verified to contain make_approval_callback and make_acp_edit_approval_requester ACP relay code. Under the tested default/native policy, a harmless shell write executed directly, produced the expected marker, and emitted neither a local approval prompt nor ACP session/request_permission.
Classification: NATIVE POLICY / NO ROOM APPROVAL REQUIRED FOR THE TESTED PATH.
Context
#286 is complete and closed. Agent v0.5.24 now has a production-verified generic Room-native ACP approval path using the built-in Claude Harness:
This follow-up does not reopen the Room approval architecture. It tracks truthful per-Harness behavior and public documentation after #286.
Current compatibility matrix
untrusted, but testedcodex-acp1.6.2 and 1.10.0 did not expose that path under current ACP mode presets. Track upstream rather than patching Free4Chat core.askpolicy emitted real ACPsession/request_permission; production Room card, ordinaryyesno-op, Allow once, Reject, same-turn continuation, and post-denial recovery all passed.session/request_permission, the generic Free4Chat path should work.Codex upstream references:
Immediate documentation follow-up
Update the public Agent permissions and approvals documentation so it states the shipped behavior truthfully:
Keep the docs user-oriented. Do not turn the public page into an implementation matrix dump.
Durable permission choices
The Claude production test also exposed an important presentation boundary:
A durable native option may have Harness-defined lifetime/storage semantics (session, project-local settings, user settings, etc.).
Free4Chat must not infer those semantics from the button label or
kind. Public docs should say so explicitly.The current generic feature remains correct because it forwards the exact native option id unchanged. A future UI improvement may display native scope/effect metadata when the Harness already provides a bounded safe presentation, but this issue does not require inventing a Free4Chat permission taxonomy.
Final probe results
OpenCode
OpenCode 1.18.18 was tested with
opencode acp --pureand a disposable per-processOPENCODE_CONFIG_CONTENTpolicy settingbash,edit, andexternal_directorytoask.A harmless command produced a real production Room approval card with the full command and native options
Allow once/Always allow/Reject. Ordinary Human chatyesdid not approve the pending request.Allow onceresumed the same turn and produced the expected marker contents;Rejectprevented a second marker from being created; a later ordinary turn succeeded.Classification: ROOM APPROVAL VERIFIED.
Hermes
Hermes Agent v0.21.0 (2026.8.31) was verified to contain
make_approval_callbackandmake_acp_edit_approval_requesterACP relay code. Under the tested default/native policy, a harmless shell write executed directly, produced the expected marker, and emitted neither a local approval prompt nor ACPsession/request_permission.Classification: NATIVE POLICY / NO ROOM APPROVAL REQUIRED FOR THE TESTED PATH.
Non-goals
Acceptance