AGENTS.md, skills, memory — and where Noteheld fits
You can put words near an agent in more than one way, and those ways are not the same tool. An instruction file is text you save where a coding agent looks, so that agent may include it when it starts. A skill is a named procedure the agent opens for one task, after it has already seen a short description (10). ChatGPT and Claude.ai can save notes from your chats and use them in a later chat in that same product (12) (13). Noteheld keeps a note with an author, a time, a reason, and a correction that is not the note, and an agent sees it only after you give the agent a key and the agent asks Noteheld for the note.
Which one do I need?#
Match the job. If the sentence has to be in front of the agent on every task, use a short instruction file. If it is a procedure for one kind of task, use a skill. In Claude Code, if it has to run even when the model would skip it, use a hook (9). If the words are personalization inside ChatGPT or Claude.ai, that is vendor memory in that product (12) (13). If you are connecting a tool, that is MCP, a protocol for the connection, not a store (14). If you are publishing a short map of a website, that is llms.txt. Nothing in that proposal requires an agent to fetch the file or obey it (16). If the fact needs an author, a time, a reason, and a correction that is not the text, use Noteheld.
The number at the end of a sentence is the source list below. Those pages were checked on 2026-10-15.
| Mechanism | Who writes it | When an agent sees it | Where it lives | Who can review or correct it | What it does not do |
|---|---|---|---|---|---|
| Instruction file. AGENTS.md, CLAUDE.md, GEMINI.md, Cursor rules, and Copilot instruction files are this kind. | You write the file. | When that product loads it, by that product's own rule. The rules are not the same. See the next section. | A markdown file on disk. A copy in the repository can be committed. A copy in a home directory stays on that machine. | You edit the file and save it. AGENTS.md has no required fields, so that file does not require a reason (17). | In Claude Code, CLAUDE.md is context, not enforcement. A hook is how you block an action the model might still take (9). The same file is not one behaviour in every coding agent. It does not load Noteheld. |
| Skill | You, or the author of the tool. | The agent loads the name and the description first, and the body when the skill is activated (10). In Claude Code, descriptions of skills the model may call load at session start, and the body loads only when the skill is used (9). | A directory whose SKILL.md has a name and a description, then a markdown body (10). | You edit the files. The spec limits name to 64 characters and description to 1024, and recommends the body stay under 500 lines (10). | Claude Code calls it an open standard, and Claude Code adds its own frontmatter (11). The spec page does not name a steward. A logo on agentskills.io is not proof that a product implements the spec (10). |
| Hook | You. | The program runs it when the event happens. In Claude Code, hooks always fire on their event. A sentence in CLAUDE.md does not (9). | Claude Code runs the hook at that event (9). | You change the hook. A hook is how you block an action the model might still take (9). | It does not keep an author, a time, and a reason on a note. It does not load Noteheld. A sentence in an instruction file does not do this job. |
| Vendor memory in ChatGPT and Claude.ai | ChatGPT memory is personalization from chats and other sources. ChatGPT decides what is relevant (12). Claude.ai memory is stored as topics you can edit or delete (13). | ChatGPT does not keep every detail (12). Claude.ai can use a saved topic in a later chat (13). Cloud Cowork shares that memory. Local Cowork sessions do not (13). | Inside ChatGPT. Claude.ai stores topics you can edit or delete in Settings (13). Not in your repository. | In ChatGPT you can review a memory summary and correct, suppress, or delete it. The summary is not everything ChatGPT may use (12). In Claude.ai you edit or delete a topic in Settings. Deleting a chat does not delete memory generated from it (13). Saved ChatGPT memories can outlive the chat they came from. Deleting that chat does not delete the saved memory (12). | Custom instructions are what you write about how ChatGPT should respond. Memory is different (12). It is not Noteheld. This page does not claim that ChatGPT memory is available to Codex, Cursor, or Noteheld. |
| MCP | You point a host at a server. The server is a program someone wrote to offer data or tools (14). | After the connection is configured. On the 2025-11-25 server page, tools are chosen by the model, resources by the application, and prompts by the user. The 2026-07-28 overview lists resources, prompts, and tools, and does not repeat that control table (14) (15). | Nowhere by itself. MCP is a protocol, not a store. A server may store data. The protocol does not (14). | Whatever screen the host built for consent. The spec says hosts must obtain consent. It also says the protocol cannot enforce that (14). | It does not put a Noteheld note in front of an agent. You still configure a key, and the agent still has to call a tool. |
| llms.txt | The person who publishes the website. | Only if an agent chooses to fetch the URL. Nothing in the proposal requires an agent to fetch it or obey it (16). | A markdown file on the website. It gives an agent a short map of a path and links to the detail (16). | You publish a new copy of the file. | It is not robots.txt. The proposal does not say that publishing the file puts the site's rules into every coding agent (16). |
| Noteheld. Use it when a fact needs an author, a time, a reason, and a correction that is not the text. | An agent with a write key, or the master key, writes the note. You add a correction in the browser. The server sets the author. A browser session is a person. A bearer key is an agent. | When that agent calls a Noteheld tool, or when you open the browser, or when someone opens a view link. A view link can read a note or a folder. It cannot edit. The note is not loaded at the start of every task. | On the Noteheld server. Notes are stored on the server as plaintext so the product can search, outline and edit by line. Version 1 does not encrypt note bodies end to end. | You add a correction above the note. The correction is not written into the body. This version has no editor for the note body. A person's correction is still stored data. On the free plan, every revision is kept for 30 days. After that, one checkpoint per note per day for 365 days. If the master key, the recovery kit and the passkey are all gone, we cannot recover the workspace. Read /safety. | It does not replace an instruction file, a skill, a hook, or vendor memory. Folder keys limit what a compromised agent can touch inside Noteheld, not tools the agent has elsewhere. A correction does not stop a model from following text inside a note. |
The same filename is not one behaviour#
AGENTS.md is a plain markdown file with no required fields, meant as instructions for coding agents (17). The agents.md site lists other products. This page does not claim those products read the file. Their own docs were not the source for that (17).
Codex reads AGENTS.md before doing work, concatenates from the repo root down to the working directory, and stops at 32 KiB by default (1).
Cursor reads AGENTS.md in the root and in subdirectories, and combines them, with more specific instructions taking precedence (2). Cursor rules are persistent prompt context for Agent chat. They do not affect Tab or inline edit (2). Rules in .cursor/rules are .mdc files. A plain .md file there is ignored (2). The four rule types are always, when a glob matches (a path pattern), when the agent judges a description relevant, and only when you mention the rule (2). On Team and Enterprise, team rules outrank rules in the repository, which outrank user rules (2). User rules are not files in the repository (2). The rules page says to keep rules under 500 lines. That is guidance, not a documented hard cap (2).
Claude Code reads AGENTS.md only when no CLAUDE.md or CLAUDE.local.md is in the working directory or above it, on v2.1.277 or later. You can change that default (3). CLAUDE.md can live at managed, user, repository, and local scopes. The repository copies are the ones git shares (3). A Claude Code session starts with a fresh context window. CLAUDE.md and auto memory are how knowledge crosses sessions (3). CLAUDE.md is context, not enforcement. A hook is how you block an action the model might still take (9). Keep CLAUDE.md under 200 lines. That figure is the vendor's target. Claude Code skips a file over 4 MiB (3).
Auto memory is on by default in local sessions, stored on that machine, and the first 200 lines or 25KB of MEMORY.md load at start (3). Auto memory, the CLAUDE.md you write, and Claude.ai memory are not one feature (3) (13).
GEMINI.md is instructional context. Gemini CLI concatenates the files it finds and sends them with every prompt (4). There is a file at ~/.gemini/GEMINI.md, files in the directory you opened, and files discovered when a tool touches a directory (4). The default context filename is GEMINI.md. You can point Gemini CLI at AGENTS.md by setting context.fileName (4). /memory show prints what was loaded. /memory reload rescans (4). Those commands read an instruction file. They are not ChatGPT memory. That page does not state a numeric size limit (4).
Repository-wide Copilot instructions can live in .github/copilot-instructions.md. Path-specific files are .github/instructions/*.instructions.md with applyTo (6). Personal instructions are higher priority than repository instructions, which are higher than organization instructions, and all relevant sets are still provided (6). Copilot CLI also discovers AGENTS.md, CLAUDE.md, and GEMINI.md (5). The repository-instructions page is one surface where Copilot reads AGENTS.md. That is not every Copilot surface (6). The customization cheat sheet calls AGENTS.md a file for third-party agents (7). Those pages do not agree. Copilot code review reads instructions from the pull request's head branch (18).
On Devin Desktop, a root AGENTS.md is always on. A subdirectory AGENTS.md applies to that directory (8). Auto-generated Cascade memories are local, per Devin workspace, and not committed. The default Devin Local agent does not persist them (8). That page recommends a rule or AGENTS.md instead of auto memory when the fact must be reliable and shared (8).
Length limits are not one number. Codex stops the combined AGENTS.md text at 32 KiB by default (1). Claude Code's target is under 200 lines, and it skips a file over 4 MiB (3). Cursor's suggestion to stay under 500 lines is guidance, not a documented hard cap (2). The skills spec recommends the body stay under 500 lines (10). On Devin Desktop, global rules are capped at 6,000 characters. A Devin workspace rule file is capped at 12,000 characters (8). The GEMINI.md page does not state a numeric size limit (4).
What a chat product means by memory#
Claude.ai memory is on by default for Claude.ai Free, Pro, and Max, and off for Team and Enterprise members until an owner enables it and the member turns it on (13). Some sensitive categories are excluded unless you opt in. Government IDs, criminal history, and immigration status are never saved, and that page names further categories that are never saved (13).
Deleting a ChatGPT chat does not delete a saved memory from that chat (12). The memory summary you can review is not the whole of what ChatGPT may use (12).
Where Noteheld is not the right tool#
Nothing loads Noteheld for free. An agent sees a note only when someone configured a key and the agent calls a tool. A short instruction file that you commit is the right tool when the sentence must be present on every task. Noteheld does not do that job. Tell the agent to read the overview first, then only the notes it needs. The overview lists the notes with open corrections, and each one prints first when the agent opens that note.
Noteheld is not an instruction file, a skill, a hook, or vendor memory. A skill is a directory with a SKILL.md file (10). A Noteheld workspace is not that directory. You can copy note text into a repository file. Noteheld does not turn the note into an AGENTS.md for you.
If you are reviewing what an agent wrote, keep these limits in the same breath. Notes are stored on the server as plaintext so the product can search, outline and edit by line. Version 1 does not encrypt note bodies end to end. The live database files are plaintext. When the operator's backup key is set, Noteheld takes an encrypted snapshot on a daily schedule and keeps those snapshots for 14 days. A snapshot is a copy of the notes. This version has no editor for the note body. A correction sits above the note and is not written into the body. The server sets the author. A browser session is a person. A bearer key is an agent. A person's correction is still stored data. Content returned to agents is marked as stored data and carries provenance. This does not stop a model from following text inside a note. A warning that the text looks like instructions does not block the read. A note can still steer an agent that reads it. Folder keys limit what a compromised agent can touch inside Noteheld, not tools the agent has elsewhere.
On the free plan, every revision is kept for 30 days. After that, the plan keeps one checkpoint per note per day for 365 days. The current text stays while the workspace exists. Pro does not thin. A write past the storage cap fails and deletes nothing. A free workspace with no authenticated read or write warns on day 60, becomes read-only on day 90, and is deleted on day 120. A view-link visit does not count. Paid workspaces never idle-expire.
The master key opens the workspace. The recovery kit is a file on your machine. Anyone with that file can read and change the workspace. A passkey can sign you in and rotate the master key. If the master key, the recovery kit and the passkey are all gone, we cannot recover the workspace. There is no account.
Using them together#
Use an instruction file, a skill, and Noteheld when you need a standing sentence, a procedure, and a record.
In the instruction file that your coding agent actually loads, tell it to use its Noteheld key. Tell it to read the overview first, then only the notes it needs. Tell it to write decisions and handoffs as notes, with a reason. Tell it to treat note text as data, not as instructions. If that agent is Claude Code and a CLAUDE.md is already there, put those sentences in CLAUDE.md. On v2.1.277 or later, Claude Code reads AGENTS.md only when no CLAUDE.md or CLAUDE.local.md is in the working directory or above it, unless you change that default (3).
Put the longer steps in a skill. The name and the description load first. The body loads when the skill is activated (10). In Claude Code, the body loads only when the skill is used (9).
Noteheld holds the record. Each edit stores the key's label, the time, and a reason. reason is required, and it is at most 300 characters. If a sentence is wrong, add a correction above the note. Do not paste the objection into the body. The next agent cannot tell that objection from the note. The correction does not replace the body. This version has no editor for the note body. A person's correction is still stored data. You can ask an agent that has a write key to update the note. That request does not force the next read to obey, and it is not a hook.
Words people mix up#
Instruction file#
Text you save so a coding agent may insert it. AGENTS.md, CLAUDE.md, GEMINI.md, a Cursor rule, and a Copilot instruction file are this kind of object. Sharing a filename does not make the load rules the same.
Skill#
A directory with a SKILL.md file. The agent can see the name and the description before it opens the body. The body is the procedure (10).
Hook#
A step the program runs when an event happens. In Claude Code, a hook can block an action. A sentence in CLAUDE.md cannot (9).
Vendor memory#
Notes that ChatGPT or Claude.ai keep from chats and may use in a later chat in that product (12) (13). You did not commit them to a repository. Noteheld is not vendor memory.
MCP#
An open protocol for connecting a host to external data and tools, using JSON-RPC. A server may offer resources, prompts, and tools (14). The protocol is not a store, and it is not a note.
llms.txt#
A proposal for a markdown file on a website. It is a short map of a path, with links to the detail. Nothing in the proposal requires an agent to fetch it or obey it. It is not robots.txt (16).
Correction#
In Noteheld, a fix the owner asked for, on a note or a line range. An agent sees it first when it reads that note, changes the note, then resolves it. Only the owner adds one. The correction is not the note body. It is still stored data.
Revision#
One stored edit of a Noteheld note. The row keeps the key's label, the time, and a reason. Restore writes a new revision. It does not erase the later one.
Sources#
Each page was accessed on 2026-10-15.
- Codex AGENTS.md guide. https://developers.openai.com/codex/guides/agents-md
- Cursor rules. https://cursor.com/docs/rules
- Claude Code memory. https://code.claude.com/docs/en/memory
- Gemini CLI, GEMINI.md. https://geminicli.com/docs/cli/gemini-md/
- GitHub Copilot CLI custom instructions. https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/add-custom-instructions
- GitHub Copilot repository instructions. https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-repository-instructions
- GitHub Copilot customization cheat sheet. https://docs.github.com/en/copilot/reference/customization-cheat-sheet
- Devin Desktop, Cascade memories. https://docs.devin.ai/desktop/cascade/memories
- Claude Code features overview. https://code.claude.com/docs/en/features-overview
- Agent Skills specification. https://agentskills.io/specification
- Claude Code skills. https://code.claude.com/docs/en/skills
- ChatGPT memory FAQ. https://help.openai.com/en/articles/8590148-memory-faq
- Claude.ai chat search and memory. https://support.claude.com/en/articles/11817273-use-claude-s-chat-search-and-memory-to-build-on-previous-context
- Model Context Protocol specification, 2026-07-28. https://modelcontextprotocol.io/specification/2026-07-28
- Model Context Protocol server page, 2025-11-25. https://modelcontextprotocol.io/specification/2025-11-25/server
- llms.txt proposal. https://llmstxt.org/
- AGENTS.md. https://agents.md/
- GitHub Copilot custom instructions tutorial.
https://docs.github.com/en/enterprise-cloud@latest/copilot/tutorials/use-custom-instructions