What is dynamic vs static
| Resource | Behavior |
|---|---|
| Agent’s host | Static — set at agent creation; an agent can’t change host mid-task |
| Specialty | Static — set at agent creation; can’t change mid-task |
| Which agent gets the ticket | Dynamic — the gateway picks per-ticket based on host and intent |
| Operational Rules | Both — tag-matched programmatically, plus dynamic top-ups from the gateway and the agent |
| Host Knowledge facts | Always available when working on that host |
| Blacklist | Runtime check, never injected. Each command is screened before execution. |
How injection happens
- Tag matching at dispatch — fully deterministic. A rule with
os:linux+procedure:restartlands on every Linux restart task. - Gateway top-up — the gateway can attach non-obvious rules it noticed in the ticket text. This is the LLM-judgment layer that catches what tags can’t.
- In-task pull — if the agent encounters something it isn’t sure about, it can search for rules and facts mid-execution.
Why this matters
Without dynamic context injection, you’d be writing giant specialties that try to cover every edge case, or massive operational rules that fire on every task. Both bloat the agent’s context and degrade decisions. With dynamic injection, you keep each rule small and specific, and trust the matching layer to surface it when it matters.How to think about it as an author
- A specialty teaches the style — polyvalent.
- An operational rule encodes truth about your env — small, specific, well-tagged.
- The matching layer does the work of choosing which rules apply to a given ticket.
- If a rule isn’t reaching the tasks you expect, the matching trace on each task’s detail page tells you which rules matched and which were skipped, and why.

