[BUG] Claude Tag: Persistent per-channel memory not inherited by trigger-spawned sessions
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
When a scheduled trigger fires and spawns a fresh session (via the claude-code-remote MCP's create_trigger with create_new_session_on_fire: true), the new session does not inherit the per-channel memory partition that interactive sessions in the same channel receive. As a result, /tmp/claude/memory/ does not exist in trigger-spawned sessions, and routines that rely on per-channel state (dedup markers, cursors, etc.) have no persistent scratch space across fires.
Trigger-spawned sessions boot without CLAUDE_MEMORY_STORES set. Consequences observed in the fresh session:
/tmp/claude/memory/ does not exist at all.
/tmp/rclone-mount-config.json contains only the default /mnt/account-plugins mount — no memory mount is configured.
Startup logs do not include the resume_hydrate_fetch_ms step that appears in interactive session boot logs.
The MCP surface offers no way to attach a memory partition to a trigger either: create_trigger accepts name, prompt, cron_expression, run_once_at, environment_id, persistent_session_id, create_new_session_on_fire, and notifications; update_trigger accepts name, cron_expression, run_once_at, and enabled. Neither exposes a memory_stores, env_vars, or equivalent field. Environment-level configuration is also not diagnosable through the MCP — list_environments returns zero entries on this account.
What Should Happen?
Expected behaviorA trigger created from within a channel-scoped interactive session should spawn sessions that see the same team memory partition as the parent channel. Specifically, the spawned session's environment should include a CLAUDE_MEMORY_STORES entry pointing at the channel's memory mount, and /tmp/claude/memory/team/silo/channel/CXXXXX/ should be hydrated at boot just as it is for interactive sessions.
Error Messages/Logs
Steps to Reproduce
In a channel-scoped interactive session, confirm memory hydration works: env | grep CLAUDE_MEMORY_STORES returns a value like [{"path":"/v1/code/memory/cagt_xxx","mount":"silo","mode":"rw","promptIndex":"channel/CXXXXX/MEMORY.md","promptIndexMaxBytes":16384}], and ls /tmp/claude/memory/team/silo/channel/CXXXXX/ shows the hydrated directory.
From that same session, create a trigger that fires on a short interval into a fresh session:create_trigger(
name="memory-probe",
prompt="Report the output of: env | grep CLAUDE_MEMORY_STORES; ls -la /tmp/claude/memory 2>&1; cat /tmp/rclone-mount-config.json",
cron_expression="/5 *",
create_new_session_on_fire=true
)
Wait for the trigger to fire and open the spawned session.
Observe: CLAUDE_MEMORY_STORES is unset, /tmp/claude/memory does not exist, and /tmp/rclone-mount-config.json shows only the default /mnt/account-plugins mount.
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.197
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗