Channel attribution 'Sent by Claude' cannot be disabled, overrides plugin signature setting
Bug
The iMessage plugin has an IMESSAGE_APPEND_SIGNATURE env var that controls whether "\nSent by Claude" is appended to outbound messages. Setting it to false successfully disables the plugin-level signature. However, the Claude Code harness/channel system adds its own "Sent by Claude" attribution to every message sent through the reply MCP tool, and there is no way to disable it.
Steps to reproduce
- Install iMessage plugin:
/plugin install imessage@claude-plugins-official - Set env var in
.mcp.json:
"env": {
"IMESSAGE_APPEND_SIGNATURE": "false"
}
- Launch with:
claude --channels plugin:imessage@claude-plugins-official - Send a message via the
replytool - Recipient sees "Sent by Claude" appended despite the env var being set to false
Investigation
- Verified
IMESSAGE_APPEND_SIGNATURE=falseworks in a standalone bun process (process.envreads correctly) - Hardcoded
APPEND_SIGNATURE = falsein server.ts — still shows "Sent by Claude" - Sent same message via raw AppleScript (bypassing the reply tool entirely) — no signature appears
- Conclusion: the harness adds attribution to all outbound channel messages independently of the plugin's own signature logic
Expected behavior
Setting IMESSAGE_APPEND_SIGNATURE=false should result in no "Sent by Claude" signature on outbound messages. Alternatively, there should be a harness-level flag (e.g. --no-attribution) to disable channel attribution.
Use case
For an auto-reply bot where messages are already clearly identified as bot-generated (e.g. via a custom signature like "- kaighnbot"), the double signature is redundant. Users should be able to control their own attribution.
Workaround
Sending via raw AppleScript (osascript) bypasses the harness attribution, but this is unreliable for some contacts (error 22 for certain RCS handles) and loses the plugin's chunking and attachment features.
Environment
- Claude Code with
--channelsflag - iMessage plugin v0.0.1
- macOS Sequoia
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗