Google Sheets Is a Great State Store. It Is Not Agent Memory.
Google Sheets Is a Great State Store. It Is Not Agent Memory. Your scheduled agent keeps a tab called "memory" in the same workbook it writes its reports to. Every run starts the same way: read the tab, do the work, append a few rows, shut down. No database to provision, no new subscription to justify, and when the agent does something strange you can open the tab and see exactly what it saw. It feels like the problem is solved. For about a month, it is. Then the sheet starts acting less like
Google Sheets Is a Great State Store. It Is Not Agent Memory.
Your scheduled agent keeps a tab called "memory" in the same workbook it writes its reports to. Every run starts the same way: read the tab, do the work, append a few rows, shut down. No database to provision, no new subscription to justify, and when the agent does something strange you can open the tab and see exactly what it saw. It feels like the problem is solved.
For about a month, it is. Then the sheet starts acting less like a brain and more like a junk drawer with a search bar that does not quite work.
This is not a complaint about spreadsheets. Sheets are excellent at the job they were built for. The trouble is that a scheduled agent needs four things from memory, and a spreadsheet reliably provides about one and a half of them.
Why everyone tries the sheet first
Three honest reasons, and all of them are good ones:
- Zero infrastructure. The workbook already exists. The workflow already writes to it. Memory becomes one more tab, not a new system to stand up.
- It is visible. When the agent misbehaves, you open the tab instead of digging through execution logs. The agent's entire worldview sits in a grid you can read.
- Humans can edit it directly. Spot a wrong fact? Fix the cell. No tooling, no deployment, no waiting for the next run.
Keep the sheet for everything it is genuinely good at: the run ledger, processed flags, last-run timestamps, thresholds the operator tunes, the human-readable dashboard of what the automation did. If the agent only needs a checklist of what happened, the sheet is plenty.
The problems start when the sheet is asked to be the agent's memory rather than its notebook.
1. Retrieval is by range, not by meaning
A real memory layer answers "what do we know about this account?" by finding the relevant memories. A sheet answers by handing you a range of cells. So the agent faces an ugly choice: pull the whole tab, or pull a filtered slice with a filter it wrote itself.
Pulling the whole tab works until the tab grows. A few thousand rows of run history will eat half the context window, and the agent spends the first chunk of every run reading memory it does not need for this run. Filtering is worse in the opposite direction: a self-written filter silently drops exactly the rows the agent most needed to see, and there is no ranking step to rescue the near-miss. There is no semantic matching, no "you probably meant this row," no relevance ordering. The bigger the sheet grows, the worse both options get, and scheduled runs happen often enough that "bigger" arrives fast.
2. Nobody owns the write side
Memory systems reconcile. They update the fact, retire the stale one, resolve the conflict. A sheet just appends.
The agent writes "prefers Slack" in row 40 in March and "prefers email" in row 211 in September, after someone said otherwise in between. Nothing merges them. Nothing expires the old one. Nothing flags the contradiction. The agent reads both, follows whichever its prompt happens to weight more heavily, and you end up debugging phantom behavior caused by two rows that say opposite things. Conflict resolution has to be a designed behavior, not something you hope a grid handles on its own. A memory layer resolves this with last write wins: say "we are not doing that anymore" once, and that becomes the truth going forward, instead of a second row that disagrees with the first.
3. Sheets are not transactional
Two scheduled runs overlap. A retry fires while the scheduled run is still going, someone triggers a manual run to test a fix, the clock skews. Both runs read the same tab, both append, one silently overwrites the other's flag cell. Or the Sheets API returns a quota error mid-run, the agent keeps going without its write, the "done" marker never lands, and the next run redoubles work it already did.
A spreadsheet tolerates partial failure by letting you notice it on Monday morning and fix it by hand. A scheduled agent that runs at 3 AM needs memory that survives partial failure without a human in the loop.
4. Conversations do not fit in a grid
The facts in the sheet are the ones someone remembered to write down. The reasons behind them live somewhere else: the thread where the customer changed their mind, the exchange where the operator overrode the agent, the failed attempt that taught it a better approach. That context lives in conversations, and conversations do not survive as cells.
A memory that keeps the full conversation history, not just extracted facts, lets the agent re-read why a decision was made instead of just what was decided. When the next run hits an edge case, "we decided X" is far less useful than the actual exchange that shows the tradeoff. The sheet stores the what. The why evaporates the moment the run ends.
The hybrid that actually works
Keep the sheet. It is a great human dashboard and a fine run ledger. But the agent's brain should live in a layer built for memory: the agent saves what it learns as it works, retrieves what is relevant by meaning and by keyword at the start of each run, and the same memory is available to every tool the operator uses, because it travels over MCP. One memory, every device, every app.
That is the shape Vilix AI takes: a cloud-hosted memory layer with zero infrastructure to manage, shared across every connected tool over MCP so each agent wakes up with the same context. It stores full conversations, not just the facts someone remembered to type into cells, so the why survives alongside the what. The plan structure stays simple: a free plan forever, a 7-day Pro trial that needs no credit card, and your data stays portable, with export or full delete available anytime.
The sheet was never the problem. It was just doing a job it was never built for. Let the grid be the dashboard. Give the agent a real memory.