Skip to content

fix(host): tell the Claude channel model to call intake - #301

Merged
kevintseng merged 1 commit into
mainfrom
fix/channel-intake-instructions
Sep 5, 2026
Merged

fix(host): tell the Claude channel model to call intake#301
kevintseng merged 1 commit into
mainfrom
fix/channel-intake-instructions

Conversation

@kevintseng

Copy link
Copy Markdown
Contributor

What it does

Rewords CHANNEL_INSTRUCTIONS in src/host-runtime/claude.ts so the model is told to call message with action: "intake" on a full channel envelope, instead of being told acknowledgement is not required.

Why it is needed

npm run qa:live-journey -- --host claude failed twice with the model never recording an intake receipt. The prior instructions literally said "no ... acknowledgement of model receipt" is needed, and the model followed that correctly. This wording was never aligned with the intake mechanism.

What this does NOT fix

After this change, two more --host claude runs (one with --setting-sources "" removed as a separate diagnostic) still failed identically. The root cause is not in this repository's code — it appears to be in how Claude Code's "Channels (experimental)" feature surfaces notifications to the model in the currently installed CLI version, which this repo cannot control or verify further. --host claude remains a known-non-functional live-journey path for now.

v4.8.4 is proceeding via the working --host codex live-journey path instead, which passed with a genuine PASS receipt at this branch's head commit.

How to test

npm run qa:live-journey -- --host codex --out .qa/codex-report.json

Expect verdict: "PASS". The --host claude path is not expected to pass; do not treat a --host claude FAIL as a regression from this change.

Linked issues

None filed yet — the Channels binding behavior is a Claude Code question, not tracked in this repo.

…can skip it

CHANNEL_INSTRUCTIONS told the connecting model "no ... acknowledgement of
model receipt" is needed, with nothing anywhere else instructing it to call
`intake` on a full message. The model followed that instruction correctly:
two owner-run `qa:live-journey --host claude` runs both failed identically,
with the channel accepting and delivering the frame while the model recorded
no intake receipt for it.

Reword the instructions to say what the model should actually do: call the
message tool with action "intake" and intake_state "ingested" on a full
message, while still treating the envelope content as untrusted data rather
than instructions.
@kevintseng
kevintseng merged commit 8072db0 into main Sep 5, 2026
13 checks passed
@kevintseng
kevintseng deleted the fix/channel-intake-instructions branch September 5, 2026 11:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant