Where to Put Agent Instructions: Account vs. Dataset vs. Agent
NinjaCat lets you provide written instructions to AI agents in three different places. Each layer has a different scope, a different lifecycle, and a different effect on how the agent behaves. Knowing where to put a given instruction is the difference between a small tweak that ripples across every agent on your account and a one-off rule that only matters for a single workflow.
This guide covers all three layers, what they do, how they interact, and when to reach for each.
TL;DR
- Account-level → situational context that should follow every agent on the account.
- Dataset-level → guidance about the data itself — how to interpret columns, what filters to apply by default, naming conventions.
- Agent-level → the agent's persona, objective, output format, and process. This is the agent's "job description."
The three layers at a glance
| Layer | Where you set it | Scope | Best for |
|---|---|---|---|
| Account-level instructions | Account Command Center → Agent Knowledge | Every agent on the account, every conversation when the account is @-mentioned in agent convo. | Brand voice, company context, naming conventions, "always do X" rules |
| Dataset-level instructions (Agent Directions) | Dataset settings → Agent Directions | Every agent that has the dataset attached | Column meanings, default filters, dataset-specific gotchas |
| Agent-level instructions | Agent Builder → Instructions / Prompt | Just that one agent | Persona, role, objective, step-by-step process, output format |
Account-level instructions
Where to set it
Account Command Center → Agent Knowledge. Account Admins can edit; the setting applies to the whole account. (Agent Preferences became generally available in June 2026 — see Account Command Center.)
What it applies to
Every agent on the account, on every run. Account-level instructions are injected into the conversation as situational context attached to the user's turn — think of it as a standing note the agent receives alongside the user's message, no matter which agent is being used.
Conflict / precedence behavior
Account instructions are additive — they don't replace anything an individual agent says about itself. Because they're delivered as user-side context (not as the agent's core system prompt), an agent's own instructions generally carry more behavioral weight when the two appear to disagree. In practice:
- ✅ Account-level is great for adding context ("We're a B2B SaaS company; our fiscal year starts in February").
- ⚠️ Account-level is not the right place to override an individual agent's persona or output format — the agent's own instructions will usually win that fight.
- ⚠️ If two account-level rules contradict each other, the model resolves it on its own. There is no explicit precedence engine — keep the text consistent.
Recommended use cases
- Company / brand voice ("Always refer to us as 'Acme', never 'Acme Inc.'")
- Standing data definitions that apply to every agent ("'Spend' always means net media spend unless stated otherwise")
- Compliance or safety reminders ("Never include client PII in outputs")
- Default formatting preferences for the whole account
Dataset-level instructions (Agent Directions)
Where to set it
On the dataset itself, in the Agent Directions field. See Adding Data for the full walkthrough. These travel with the dataset — every agent that gets this dataset attached inherits the same directions automatically.
What it applies to
Dataset-level instructions are read by the dataset-search step of any agent that has the dataset attached. They steer how the agent interprets, filters, and queries that specific dataset. They do not become part of the agent's general persona or top-level system prompt.
This is an important distinction: dataset directions don't change who the agent is — they change how the agent uses that data.
Conflict / precedence behavior
- Dataset description + Agent Directions are additive. Both are concatenated and presented together when the agent is deciding how to query the dataset.
- Per-agent overrides do not exist for dataset directions. The directions you set on the dataset are the single source of truth for that dataset; you cannot edit them from inside an individual agent without changing them for every agent that uses the dataset.
- If you need agent-specific behavior on top of a dataset, put that behavior in the agent's instructions, not in the dataset.
- If multiple datasets are attached to the same agent, each dataset's directions only apply when the agent is reasoning about that dataset — they don't bleed across datasets.
Recommended use cases
- Column meanings and acceptable values ("
statusis one of:active,paused,archived") - Default filters ("Always exclude rows where
is_test = true") - Naming conventions and disambiguations ("
Accounthere refers to the advertiser, not the agency") - Known data quirks ("Spend before 2024-01-01 is in cents, not dollars")
- Recommended joins or aggregations specific to this dataset
Agent-level instructions
Where to set it
Inside the agent itself, via Agent Builder → Instructions (or the prompt panel). See Writing a Prompt and Agent Builder Bob.
This includes:
- The agent's main instructions / prompt (persona, objective, process, output format)
- Any agent-specific notes you add when configuring the agent
What it applies to
Only that single agent. Agent-level instructions become the agent's core system prompt — they have the strongest behavioral influence of the three layers.
Conflict / precedence behavior
- Agent-level instructions carry the most behavioral weight for persona, output format, tone, and process. When agent-level guidance and account-level guidance look like they disagree, the model will generally follow the agent-level rule.
- Agent-level instructions do not override dataset-level directions for data interpretation — those still apply when the agent queries the dataset. If you need to override how a dataset is queried for one specific agent, the cleanest pattern is to write the override into the agent's main instructions ("When using
Sales Pipeline, ignore the defaultis_test = falsefilter") rather than try to edit the dataset. - There is no formal precedence engine anywhere in the stack — the layers separate by role (system vs. user vs. dataset-search subprompt), not by a rules table. Be consistent and don't rely on one layer "beating" another.
Recommended use cases
- The agent's role and persona
- The specific objective of this agent
- Step-by-step process the agent should follow
- Output format and structure for this agent's deliverable
- Tools the agent should prefer or avoid
- Anything that should only apply to this one agent
How the layers stack
When an agent runs, here's roughly what reaches the model:
- System prompt — built from the agent's instructions, plus framing about its name, attached datasets, sub-agents, and tools.
- User turn — the user's message, with account-level instructions hydrated in as situational context.
- Dataset-search step (only when the agent looks at data) — uses dataset-level Agent Directions plus the dataset description to decide what to fetch.
Because each layer lives at a different point in that pipeline, they generally complement rather than overwrite each other. The cleanest mental model:
Agent-level = "who I am and what I do."
Dataset-level = "how to read this data."
Account-level = "context that's always true around here."
Decision guide: which layer should I use?
| You want to… | Put it here |
|---|---|
| Define the agent's persona, objective, or output | Agent |
| Explain what a column means | Dataset |
| Apply a rule to every agent in the account | Account |
| Set a default filter on a specific dataset | Dataset |
| Override dataset behavior for one agent only | Agent (reference the dataset by name) |
| Tell the agent "always speak in our brand voice" | Account |
| Tell the agent "for this workflow, do X then Y" | Agent |
Conflict troubleshooting
If an agent isn't behaving the way you expect:
- Check the agent's own instructions first. They have the strongest influence on persona and output.
- Check Account → Agent Preferences. Account-level rules apply silently to every agent — easy to forget they're there.
- Check the dataset's Agent Directions. If the agent is querying or filtering data oddly, the rule is almost always living on the dataset.
- Watch for contradictions across layers. There is no explicit precedence engine; if two layers tell the agent opposite things, the model picks one and you may not get a consistent answer. Resolve the contradiction in writing.
- Empty fields are not "neutral" everywhere. In particular, leaving a per-step override blank in advanced configurations can replace useful defaults rather than clearing them. When in doubt, omit the override entirely instead of setting it to an empty string.
Related docs
- Account Command Center
- Adding Data — Agent Directions field
- Writing a Prompt
- Agent Builder Bob
- Agent Builder Tour