Agents · July 11, 2026 · 3 min read
Give your agents lanes: listen, speak, answer
Agent chaos ends when every tool gets one lane: listening tools never publish, one tool speaks, and anything touching private DMs stays read-only and manual.
The problem
Agent chaos rarely comes from a bad model. It comes from permissions: every tool in the stack is allowed to do everything. The scraper that pulls competitor posts could also publish. The tool that reads your inbox sits inside a scheduled loop. Nothing has gone wrong yet, and that is the entire safety mechanism.
What are agent lanes?
Agent lanes means every external tool your agents can reach gets exactly one job, and the jobs never overlap: listen (read public data), speak (publish), or answer (read private messages). My content stack talks to the outside world through exactly three services, one per lane.
Listen. One tool reads public surfaces only: competitor posts and comments, my own audience’s comments, niche trends. It feeds my competitor research loop. Because it only touches public data, it can never see a private message, and it never publishes.
Speak. One tool publishes, and it is the only one. Every post goes out through it. It stages drafts by default and posts only when I explicitly say go. My stack has a second publishing path, but it runs only when I ask for it by name, never as an automatic fallback.
Answer. One tool reads my private DMs. It is read-only, pull-only, and forever manual: I say “check my DMs”, it returns a digest, done. It never sends anything, and it is never wired into a watch loop or scheduled task. Anything unattended in my stack lives in the listen lane.
The memory hook from my routing doc: one tool listens to the crowd, one speaks to the crowd, one answers the one person in your DMs.
A read-only tool you invoke by hand has the complexity of a bookmark.
Copy the routing doc
I keep the lanes in one markdown file every agent reads. Yours can be this short. Paste it into your agent instructions and fill in your own tools:
# Tool routing: one lane per tool
LISTEN: <your research or scraping tool>
- Reads public data only: posts, comments, trends.
- Never publishes. Never touches private messages.
SPEAK: <your publishing tool>
- The ONLY tool that publishes.
- Stages drafts by default. Posts only on my explicit go.
ANSWER: <your inbox tool>
- Reads private messages. Read-only, pull only.
- I run it manually. Never in a scheduled loop or watch task.
Rules:
- One primary publisher. A secondary publishing path runs only
when I name it explicitly, never as an automatic fallback.
- If a tool could serve two lanes, it still gets exactly one.
Do this now
- List every external tool your agents can reach and write one lane next to each: listen, speak, or answer.
- Paste the routing doc above into your agent instructions and fill in your tools.
- Find the one tool currently serving two lanes and demote it to one today.