Found while end-to-end testing #934 on macOS with a real Codex CLI (0.154.0-alpha.6.2) delegation. Two follow-ups:
1. The model cannot recall truncated agent output
MAX_RESULT_TEXT_CHARS (4,000, tail-kept) caps what the model ever sees from agent_start/agent_send/agent_status, and the full text is dropped at capture time (refresh_text tail-bounds into activity.text), so nothing the model can reach retains it.
On a read-only repo-inspection task, Codex produced a ~9.8k-character report; the model received only the last 4k, concluded the beginning was lost, and spent three follow-up turns asking Codex to resend pieces of a response Codex had already fully produced. Verified against Codex's own rollout JSONL: Maple's stored result is an exact tail-cut of the completed output.
Truncating the inline result is fine, but the full output needs an on-demand recall path — e.g. persist it and let the model page through it with the read tool, the same pattern the shell tool already uses ("output exceeded the limit … use the read tool"). Having the model re-ask the agent for its own output burns turns, tokens, and agent quota, and it will keep happening on any substantial report.
2. provider is required on follow-up tools but unused for lookup
agent_send/agent_status/agent_cancel all require provider, yet require_provider only validates the string; the registry resolves purely by agent_id, which is already provider-namespaced and session-unique (codex-1, …). The provider is chosen once at agent_start and never changes.
Observed the model omitting provider twice in a row (Invalid arguments: missing field provider) before succeeding. Suggest dropping it from the follow-up tools or making it optional — agent_start is the only call that actually chooses a provider.
Found while end-to-end testing #934 on macOS with a real Codex CLI (0.154.0-alpha.6.2) delegation. Two follow-ups:
1. The model cannot recall truncated agent output
MAX_RESULT_TEXT_CHARS(4,000, tail-kept) caps what the model ever sees fromagent_start/agent_send/agent_status, and the full text is dropped at capture time (refresh_texttail-bounds intoactivity.text), so nothing the model can reach retains it.On a read-only repo-inspection task, Codex produced a ~9.8k-character report; the model received only the last 4k, concluded the beginning was lost, and spent three follow-up turns asking Codex to resend pieces of a response Codex had already fully produced. Verified against Codex's own rollout JSONL: Maple's stored result is an exact tail-cut of the completed output.
Truncating the inline result is fine, but the full output needs an on-demand recall path — e.g. persist it and let the model page through it with the read tool, the same pattern the shell tool already uses ("output exceeded the limit … use the read tool"). Having the model re-ask the agent for its own output burns turns, tokens, and agent quota, and it will keep happening on any substantial report.
2.
provideris required on follow-up tools but unused for lookupagent_send/agent_status/agent_cancelall requireprovider, yetrequire_provideronly validates the string; the registry resolves purely byagent_id, which is already provider-namespaced and session-unique (codex-1, …). The provider is chosen once atagent_startand never changes.Observed the model omitting
providertwice in a row (Invalid arguments: missing field provider) before succeeding. Suggest dropping it from the follow-up tools or making it optional —agent_startis the only call that actually chooses a provider.