Two communication layers
1) The thread timeline (what happened in a session)
- Every thread has a timeline that shows the conversation, tool calls, approvals, and results.
- This is your source of truth for “what did the agent do?” and “what output did it see?”
2) Team Comms (what happened across the team)
- Teams add a shared communications surface where messages can be broadcast to everyone or targeted to specific members.
- Team Comms is ideal for coordination: task assignment, status updates, and “FYI” announcements.
Direct message vs broadcast
- Direct messages are best for delegating a concrete task to one member (“Please update the keyboard shortcuts page and ping me when done.”).
- Broadcasts are best for shared context and alignment (“We’re targeting a release today; prioritize failing tests.”).
Delivery tracking (what the statuses mean)
Every team message has per-recipient delivery records so you can see what’s happening, not just hope it went through. Common delivery states you may see:- Pending: queued to deliver.
- Deferred: waiting for the right moment to inject (for example, if the recipient is busy).
- Injecting: actively delivering into the recipient thread.
- Injected: delivered successfully (the recipient now has the message in its context).
- Failed: delivery couldn’t complete; you can retry or re-send.
- Cancelled: intentionally stopped (for example, a message was recalled).
Compaction notices (when a member “forgets”)
Long-running threads eventually hit context limits. When the provider compacts a team member’s chat to make room, gg treats that as something the coordinator should know about — not as an error, but as a signal. If you’re subscribed (typically whoever added the member — often the lead), gg injects a short notice into your timeline when that member completes a compaction. It’s intentionally lightweight and non-blocking, but it saves time: you don’t have to guess why a member suddenly stopped remembering an early constraint — you get a heads-up and can re-send the two or three facts that matter. If you’re adding members viagg_team_manage(add), you can opt out per member with unsubscribe_from_compaction_notifications.
Compaction fallback targeting now distinguishes runtime branches:
no_hooks: default recipients are creator/subscribers only (the compacted member is excluded by default).executed: configured hook output/overrides drive recipients and message text.resolution_failedandexecution_failed: runtime falls back to the canonical baseline contract instead of collapsing tono_hooks.
Desktop notifications (keep signal high)
gg can send desktop notifications when a thread finishes a turn, but teams can get noisy fast — so notifications are configurable:- All: notify for every thread
- None: never notify
- Leads only: notify for team leads, then opt-in additional agents as needed
Practical patterns that work well
- Let the lead be the “router”: ask the lead to delegate, then follow up in Team Comms.
- Keep messages small and actionable: include the goal, constraints, and where to report back.
- When something changes, broadcast it once: “I updated the lead rules; please re-read them.”

