> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent Memory

> Learn how agent memory works in Markifact, what the agent saves on its own, how to add your own context, and how memory differs from instructions and skills.

Agent memory is what an agent knows about you and your accounts across conversations. Without it, every chat starts from zero and you re-explain the same client details, targets, and preferences every time.

Memory fills up in two ways:

* **Learned**: the agent saves durable facts as you work, without being asked
* **Added by you**: you write context yourself from the **Memory** page

Both live in the same place and the agent treats them the same way when working. The only difference is who wrote them.

***

## Memory Vs. Instructions Vs. Skills

These three layers are easy to confuse. The short version: instructions are how the agent behaves, memory is what it knows, skills are what it knows how to do.

|                         | Answers                       | Contains                                                      | Loaded                             |
| ----------------------- | ----------------------------- | ------------------------------------------------------------- | ---------------------------------- |
| **System instructions** | How should this agent behave? | Role, tone, output style, rules of engagement                 | Always                             |
| **Memory**              | What does it know about me?   | Client details, targets, naming rules, decisions, preferences | Index always, full entry on demand |
| **Skills**              | What does it know how to do?  | Repeatable processes, playbooks, checklists, scripts          | On demand                          |

Worked examples:

| You want the agent to...                              | Put it in           |
| ----------------------------------------------------- | ------------------- |
| Always answer in Spanish                              | System instructions |
| Always report in tables, never prose                  | System instructions |
| Know that Acme's target CPA is \$45                   | Memory              |
| Know your campaign naming convention                  | Memory              |
| Know that Acme's CMO signs off on creative            | Memory              |
| Build your weekly client deck in your standard format | Skill               |
| Follow your campaign launch QA checklist              | Skill               |

The rule of thumb: if it starts with "you are" or "always respond", it is an instruction. If it is a fact about your business or clients, it is memory. If it is a repeatable procedure, it is a skill.

<Info>
  Instructions are set per agent in **Agent Settings**. Memory lives on the agent's **Memory** page. Skills live on the agent's **Skills** page.
</Info>

***

## How Memory Works

Memory is stored as small markdown documents, each with a path and a one-line description.

At the start of every conversation the agent receives only the **index**: the path and description of each document, not the content. When a description looks relevant to the task, the agent opens that document and reads it.

```text theme={"dark"}
profile.md          - Who you work with: agency, accounts, role
preferences.md      - How you want reports formatted and delivered
clients/acme.md     - Acme decisions and constraints: read before touching Acme campaigns
topics/naming.md    - Campaign naming rules: read before creating or renaming a campaign
```

This on-demand loading is what keeps memory cheap. Ten documents or a hundred, the always-on cost stays roughly the same, because only the one-line descriptions are always present.

It also means **the description does the work**. A description that says when to read the document is what makes the agent actually open it at the right moment.

***

## What The Agent Saves On Its Own

The agent files durable facts as they come up in conversation, without you asking:

* Standing rules and guardrails
* Business constraints that outlive campaigns, such as target CPA or ROAS, budget authority, minimum test duration
* Naming and account structure conventions
* Reporting preferences: cadence, format, which metrics you care about
* Durable client facts, including who signs off on work
* Corrections to its own behavior
* Your stated plans, including undecided ones

### What It Never Saves

This matters as much as what it does save:

* **Data returned by an operation.** Metrics, spend, balances, audience sizes, campaign names and IDs. These go stale within a day, and stale numbers in memory are worse than no numbers. Your *decision* about a metric is memory ("we capped CPA at $45"); the metric itself is not ("CPA is $42").
* **Its own analysis or recommendations.** If it proposed something and you approved, it saves your decision, not the reasoning behind it.
* **One-off instructions.** "Exclude mobile placements on this campaign" is a task. "We never run mobile placements" is memory. When the scope is unclear, it does not save, because a wrongly remembered rule silently changes every future campaign.
* **Sensitive data.** Credentials, payment details, customer lists, lead form submissions, and personal data are never written to memory.
* **Anything that duplicates a Markifact setting**, such as your approval mode or model choice. Settings are the source of truth and change without the agent knowing.

<Tip>
  Tell the agent a durable fact once and it is saved. You do not need to repeat it or ask it to remember.
</Tip>

***

## Adding Context Yourself

Use **Add Context** on the Memory page when you want the agent to know something before it ever comes up in conversation.

Each entry has three fields:

* **Title**: what it is, shown in your list
* **Description**: what it covers and **when the agent should use it**
* **Content**: the actual knowledge

The description is the most important field, because it is the only part the agent always sees. Write it as a trigger.

Good:

> Campaign naming rules: read before creating or renaming any campaign

Weak:

> Some notes about naming

### Example Entry

**Title:** Campaign naming rules

**Description:** Campaign naming rules: read before creating or renaming any campaign

**Content:**

```text theme={"dark"}
All new campaigns follow this format:
{Client}_{Platform}_{Type}_{Objective}_{MonthYear}

- Client: short client code, e.g. ACME
- Platform: GGL for Google Ads, META for Meta Ads
- Type: SRCH, PMAX, SHOP, DISP for Google; PROS, RTG for Meta
- Objective: LEADS, SALES, TRAFFIC, AWARE

Example: ACME_GGL_SRCH_LEADS_Aug2026
Never rename existing campaigns without asking.
```

***

## Privacy And Sharing

**Everything in memory is private to you by default**, including what the agent learned from your conversations. Teammates using the same agent do not see it.

* **Learned entries are always private.** They come from your conversations, so they stay yours. There is no option to share them.
* **Entries you add are private unless you share them.** Turn off **Private to me** to make one available to teammates who use the same agent.

When you share an entry, teammates' agents can read it, and the entry shows your email so they know where it came from. Only you, as its author, or a team owner can edit or delete it. Nobody else's agent can change what you wrote.

<Info>
  Memory belongs to the agent. Each agent keeps its own memory, so a reporting agent and a campaign agent do not share what they learn. Conversations remain private per user, as they always have been.
</Info>

***

## Managing Memory

From the agent's **Memory** page you can:

* **See everything the agent knows**, with a badge showing whether it was learned or added by you
* **Open any entry** to read it exactly as the agent reads it, no summarising or prettifying
* **Edit** entries, including ones the agent learned, if it got something slightly wrong
* **Turn an entry off** without deleting it, when you want to pause it temporarily
* **Delete** an entry, which is permanent
* **Export everything** as a single markdown file

You can also manage memory in conversation. Ask the agent to forget a specific fact and it removes that line. Ask it to remember something and it files it.

<Tip>
  If the agent ever seems to be working from something wrong or out of date, open the Memory page. Everything it knows is visible there, in plain text.
</Tip>

***

## Practical Rule Of Thumb

Let the agent build memory on its own, and add context yourself for the things it has no way to learn yet: a new client's constraints, your naming conventions, a reporting format you have never asked for out loud.

If the agent is not using something you added, check the description. It should say when to read the entry, not just what it contains.

***

## Related

<CardGroup cols={2}>
  <Card title="AI Agents" icon="robot" href="/core-concepts/agent">
    Learn how agents work in Markifact and where memory fits into the agent model.
  </Card>

  <Card title="Agent Skills" icon="bolt" href="/core-concepts/agent-skills">
    Reusable processes and playbooks, the layer for what an agent knows how to do.
  </Card>
</CardGroup>
