What ChatGPT Custom actually is
Strip away the marketing and ChatGPT Custom Instructions is a persistent system-level prompt. It lives in your account settings and gets prepended to the context window of every new conversation you start, unless you explicitly turn it off for that chat.
There are two text fields. The first asks what ChatGPT should know about you, your role, your context. The second asks how you want ChatGPT to respond, your preferred tone, format, length, and style. Both fields are optional, both apply globally, and both are limited to roughly 1500 characters each in the current version.
This is technically different from three other things people often confuse it with. It is not a custom GPT, which is a separate configured assistant you build through the GPT builder. It is not the system message you pass to the OpenAI API when calling GPT models directly. It is not the Memory feature, which stores facts ChatGPT learns about you across conversations. Custom Instructions is the persistent framing layer that sits above all of those.
The practical effect is that you stop repeating yourself. Instead of writing “I am a senior backend engineer, please review this code for production readiness, focus on error handling and concurrency” at the top of every chat, you encode that once and it applies everywhere.
Setup and authentication
There is no separate account or API key. Custom Instructions lives inside your existing ChatGPT account, on every tier where the feature is enabled.
On web, the path is Settings, then Personalization, then Custom instructions. On iOS and Android the same path lives under the profile menu. On the desktop app it sits in the settings panel.
You toggle the feature on, then fill in the two text boxes. There is no preview, no syntax highlighting, no validation beyond character count. Whatever you type is what gets sent.
Authentication is the same as your ChatGPT login. If you are on a Team or Enterprise plan, your admin controls whether the feature is enabled for the workspace. Free tier accounts have access but are subject to the standard usage caps that apply to the underlying model.
One detail that matters: the feature is per-account, not per-conversation. If you want different behavior for a specific chat, you use the per-chat override that appears at the top of the conversation composer in the current interface. That override is a one-off and does not change your saved instructions.
First working example
Here is a concrete setup for a developer who wants consistent code review across many sessions.
In the first field, write something like:
“I am a senior backend engineer working primarily in Python and Go. I build data pipelines and APIs for a fintech company. I care about production reliability, observability, and clean error handling. I do not need explanations of basic concepts.”
In the second field:
“When reviewing code, return a structured response: a one-line summary, a numbered list of issues ordered by severity, then concrete code suggestions for each. Use markdown. Be direct about tradeoffs. If the code is good, say so plainly.”
Save and start a new chat. Paste a function you wrote. The response will follow the format you specified without you having to repeat the request.
Compare that to the default behavior, where ChatGPT tends to add preamble like “Sure, I would be happy to review your code” and then produces a wall of prose with no clear structure. The custom instructions removed that preamble and enforced the format.
A common mistake is to write instructions that are too vague. “Be concise” does nothing useful. “Return responses under 200 words and use bullet points” does. The model responds to specifics, not aspirations.
Another common mistake is encoding too much. If you try to capture your entire role, your entire stack, your entire style guide, and your entire output format in 1500 characters, you end up with mush. Pick the two or three things that matter most and write those tightly.
Key settings that matter
The first dial most people ignore is length. Both fields cap at roughly 1500 characters in the current version. That sounds like a lot until you start writing detailed persona instructions. You will run out of room if you try to encode a full job description plus a full style guide. Treat the fields as a high-leverage summary, not a comprehensive manual.
The second dial is the per-chat override. In the current interface, when you start a new chat, you can click a small option to add custom instructions just for that conversation. This is useful when you want to test a new instruction set without overwriting your saved version, or when a specific task genuinely needs different framing. The override does not persist.
The third dial is interaction with Memory. If you have Memory enabled, ChatGPT stores facts it learns about you across sessions. Custom Instructions and Memory overlap in purpose but work differently. Instructions are static and explicit. Memory is dynamic and inferred. They can conflict. If Memory has learned that you prefer short responses and your Custom Instructions say you want detailed technical analysis, behavior becomes unpredictable. Pick one as the source of truth and disable the other.
The fourth dial is the toggle itself. You can disable Custom Instructions entirely for a session by turning the feature off in settings. This is useful when you want a clean slate, for example when testing how the model behaves with no framing at all.
A setting that does not exist but people often wish for: there is no version history, no diff view, no A/B testing. When you change your instructions, the old version is gone. Keep your own copy somewhere outside ChatGPT.
Where it shines
Custom Instructions is genuinely useful for any role where you ask ChatGPT similar questions repeatedly. A few patterns where it pays off.
Analysts who run the same kind of analysis on different datasets. Encode your preferred output format once, and every new analysis follows the same structure.
Developers who want consistent code review or code generation. Encode your stack, your style preferences, your non-negotiables like test coverage or error handling, and stop restating them.
Writers who need a consistent voice. Encode tone, vocabulary level, and the kind of openings and closings you want. Useful for content teams where multiple people are generating drafts in the same voice.
Consultants and operators who need domain-specific framing. If you work in a regulated industry and need every response to acknowledge certain constraints, encode those constraints once.
The honest upside is that it removes a surprising amount of friction. The few seconds you save per chat add up across hundreds of chats. For heavy users, that is the difference between a tool that feels like work and a tool that feels like leverage.
Where it fails
Custom Instructions has real limits and they are worth knowing before you build a workflow around it.
There is no API access. You cannot use Custom Instructions in automated pipelines, scripts, or production systems. If you need persistent instructions in code, you pass them as the system message to the OpenAI API directly. Custom Instructions is a consumer and team productivity feature, not a developer platform.
It does not apply to custom GPTs you build. When you create a GPT through the builder, you configure its own instructions inside the builder. Your account-level Custom Instructions do not carry over. This trips up people who assume global settings apply everywhere.
It conflicts with explicit instructions in the chat. If your saved instructions say “be concise” and you write “give me a detailed 2000-word analysis” in the chat, the model usually follows the explicit chat instruction. Custom Instructions is a default, not a hard rule.
The character limit is tight for