messaging-agents
Messaging Agents
This skill enables you to send messages to other agents on the same Letta server using the thread-safe conversations API.
When to Use This Skill
- You need to ask another agent a question
- You want to query an agent that has specialized knowledge
- You need information that another agent has in their memory
- You want to coordinate with another agent on a task
What the Target Agent Can and Cannot Do
The target agent CANNOT:
- Access your local environment (read/write files in your codebase)
- Execute shell commands on your machine
- Use your tools (Bash, Read, Write, Edit, etc.)
The target agent CAN:
- Use their own tools (whatever they have configured)
- Access their own memory blocks
- Make API calls if they have web/API tools
- Search the web if they have web search tools
- Respond with information from their knowledge/memory
Important: This skill is for communication with other agents, not delegation of local work. The target agent runs in their own environment and cannot interact with your codebase.
Need local access? If you need the target agent to access your local environment (read/write files, run commands), use the Task tool instead to deploy them as a subagent:
Task({
agent_id: "agent-xxx", // Deploy this existing agent
subagent_type: "explore", // "explore" = read-only, "general-purpose" = read-write
prompt: "Look at the code in src/ and tell me about the architecture"
})
This gives the agent access to your codebase while running as a subagent.
Finding an Agent to Message
If you don't have a specific agent ID, use these skills to find one:
By Name or Tags
Load the finding-agents skill to search for agents:
letta agents list --query "agent-name"
letta agents list --tags "origin:letta-code"
By Topic They Discussed
Load the searching-messages skill to find which agent worked on something:
letta messages search --query "topic" --all-agents
Results include agent_id for each matching message.
CLI Usage (agent-to-agent)
Starting a New Conversation
letta -p --from-agent $LETTA_AGENT_ID --agent <id> "message text"
Arguments:
| Arg | Required | Description |
|---|---|---|
--agent <id> |
Yes | Target agent ID to message |
--from-agent <id> |
Yes | Sender agent ID (injects agent-to-agent system reminder) |
"message text" |
Yes | Message body (positional after flags) |
Example:
letta -p --from-agent $LETTA_AGENT_ID \
--agent agent-abc123 \
"What do you know about the authentication system?"
Response:
{
"conversation_id": "conversation-xyz789",
"response": "The authentication system uses JWT tokens...",
"agent_id": "agent-abc123",
"agent_name": "BackendExpert"
}
Continuing a Conversation
letta -p --from-agent $LETTA_AGENT_ID --conversation <id> "message text"
Arguments:
| Arg | Required | Description |
|---|---|---|
--conversation <id> |
Yes | Existing conversation ID |
--from-agent <id> |
Yes | Sender agent ID (injects agent-to-agent system reminder) |
"message text" |
Yes | Follow-up message (positional after flags) |
Example:
letta -p --from-agent $LETTA_AGENT_ID \
--conversation conversation-xyz789 \
"Can you explain more about the token refresh flow?"
Understanding the Response
- Scripts return only the final assistant message (not tool calls or reasoning)
- The target agent may use tools, think, and reason - but you only see their final response
- To see the full conversation transcript (including tool calls), use the
searching-messagesskill withletta messages list --agent <id>targeting the other agent
How It Works
When you send a message, the target agent receives it with a system reminder:
<system-reminder>
This message is from "YourAgentName" (agent ID: agent-xxx), an agent currently running inside the Letta Code CLI (docs.letta.com/letta-code).
The sender will only see the final message you generate (not tool calls or reasoning).
If you need to share detailed information, include it in your response text.
</system-reminder>
This helps the target agent understand the context and format their response appropriately.
Related Skills
- finding-agents: Find agents by name, tags, or fuzzy search
- searching-messages: Search past messages across agents, or view full conversation transcripts
More from letta-ai/letta-code
initializing-memory
Comprehensive guide for initializing or reorganizing agent memory. Load this skill when running /init, when the user asks you to set up your memory, or when you need guidance on creating effective memory files.
70syncing-memory-filesystem
Manage git-backed memory repos. Load this skill when working with git-backed agent memory, setting up remote memory repos, resolving sync conflicts, or managing memory via git workflows.
67finding-agents
Find other agents on the same server. Use when the user asks about other agents, wants to migrate memory from another agent, or needs to find an agent by name or tags.
64creating-skills
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Letta Code's capabilities with specialized knowledge, workflows, or tool integrations.
59working-in-parallel
Guide for working in parallel with other agents. Use when another agent is already working in the same directory, or when you need to work on multiple features simultaneously. Covers git worktrees as the recommended approach.
59migrating-memory
Migrate memory blocks from an existing agent to the current agent. Use when the user wants to copy or share memory from another agent, or during /init when setting up a new agent that should inherit memory from an existing one.
58