A team building on OpenAI's newer reasoning models (the o-series and later) via the Chat Completions or Responses API wants to know how the older 'system' role relates to the newer 'developer' role, and where each level of instruction sits in OpenAI's documented instruction-following hierarchy. Per OpenAI's Model Spec and API guidance, which best describes this?
- The 'system' and 'developer' roles are two independent, co-equal channels with no defined precedence between them, so a conflict between a system message and a developer message is resolved arbitrarily by the model at random
- The 'developer' role sits below the 'user' role in authority, meaning any instruction a user provides during the conversation can always override an instruction given via the developer role
- For the newer models, the 'developer' role takes over the position the 'system' role used to occupy for API callers, sitting above the 'user' role in OpenAI's documented chain-of-command (platform-level instructions rank above developer instructions, which in turn rank above user instructions, with assistant and tool messages carrying no independent authority)
- The 'system' role was retired entirely with no replacement, and any instruction that used to go in a system message must now be passed only through the per-request `instructions` parameter, with no message-role equivalent available at all
Why C? And why not the others?
Correct answer: C. For the newer models, the 'developer' role takes over the position the 'system' role used to occupy for API callers, sitting above the 'user' role in OpenAI's documented chain-of-command (platform-level instructions rank above developer instructions, which in turn rank above user instructions, with assistant and tool messages carrying no independent authority)
For OpenAI's newer models, the 'developer' role takes over the position that the 'system' role used to occupy for API callers, and OpenAI's documented chain-of-command places platform-level instructions above developer instructions, developer instructions above user instructions, and gives assistant and tool messages no independent authority of their own. This means a developer message still functions as the caller's highest-authority channel short of platform-level constraints, with the end user's messages ranking below it, which matches how the older system role used to behave relative to user messages. The option describing the two roles as co-equal with random conflict resolution is wrong because OpenAI documents an explicit precedence order rather than leaving conflicts undefined. The option claiming the developer role ranks below the user role is wrong because it inverts the documented hierarchy; developer instructions outrank user instructions, not the reverse. The option claiming the system role was retired with absolutely no message-role equivalent is wrong because the developer role message is exactly that equivalent; instructions did not need to move to a parameter with no role-based alternative available.
Source: OpenAI Model Spec (chain-of-command / instruction hierarchy: platform, developer, user, guideline, no authority); OpenAI Developer Community documentation on the developer role in the Responses API