<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Responses API on KnightLi Blog</title>
        <link>https://www.knightli.com/en/tags/responses-api/</link>
        <description>Recent content in Responses API on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Fri, 15 May 2026 01:25:27 +0800</lastBuildDate><atom:link href="https://www.knightli.com/en/tags/responses-api/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>GPT-5.5 Prompt Migration Guide: Why old prompts should be trimmed before rewritten</title>
        <link>https://www.knightli.com/en/2026/05/15/gpt-5-5-prompting-guide/</link>
        <pubDate>Fri, 15 May 2026 01:25:27 +0800</pubDate>
        
        <guid>https://www.knightli.com/en/2026/05/15/gpt-5-5-prompting-guide/</guid>
        <description>&lt;p&gt;OpenAI has updated the &lt;code&gt;GPT-5.5 prompting guide&lt;/code&gt; in its API documentation. The most useful part of the guide is not that it gives yet another longer prompt template, but that it reminds developers of something easy to miss: when migrating to GPT-5.5, many old prompts should become shorter.&lt;/p&gt;
&lt;p&gt;Official documentation: &lt;a class=&#34;link&#34; href=&#34;https://developers.openai.com/api/docs/guides/prompt-guidance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://developers.openai.com/api/docs/guides/prompt-guidance&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In one sentence, the prompting direction for GPT-5.5 is: write less process and more outcome; stack fewer rules and define acceptance criteria better; use fewer &amp;ldquo;always must&amp;rdquo; instructions and specify when to stop, when to validate, and when to gather more evidence.&lt;/p&gt;
&lt;h2 id=&#34;why-old-prompts-need-rewriting&#34;&gt;Why old prompts need rewriting
&lt;/h2&gt;&lt;p&gt;Many production prompts are built layer by layer. When a model is unstable, one rule is added. When tool use fails, another prohibition is added. When output gets verbose, another formatting paragraph appears. Over time, a system prompt becomes a heavy operations manual.&lt;/p&gt;
&lt;p&gt;That style can be useful with older models, because the model may need more step-by-step constraints to stay on track. But with GPT-5.5, OpenAI&amp;rsquo;s advice is clear: do not move the old prompt stack over unchanged.&lt;/p&gt;
&lt;p&gt;Over-specifying the process brings several side effects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More noise: the model must find the truly important constraints inside many old rules.&lt;/li&gt;
&lt;li&gt;Narrower search space: the model becomes less willing to choose a more efficient solution.&lt;/li&gt;
&lt;li&gt;Mechanical output: it looks like script execution instead of problem solving.&lt;/li&gt;
&lt;li&gt;Conflicting old rules: tool calls and final answers can both become worse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GPT-5.5 is better served by prompts that describe the target state, constraints, available evidence, and final output, instead of hard-coding every step.&lt;/p&gt;
&lt;h2 id=&#34;outcome-first-define-what-done-means-first&#34;&gt;outcome-first: define what done means first
&lt;/h2&gt;&lt;p&gt;The official documentation repeatedly emphasizes one direction: GPT-5.5 works best with outcome-first prompts.&lt;/p&gt;
&lt;p&gt;That means the prompt should first define:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What the target result is.&lt;/li&gt;
&lt;li&gt;What counts as success.&lt;/li&gt;
&lt;li&gt;Which constraints cannot be crossed.&lt;/li&gt;
&lt;li&gt;What context is currently available.&lt;/li&gt;
&lt;li&gt;Which fields or sections the final answer must include.&lt;/li&gt;
&lt;li&gt;What to do when evidence is insufficient.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A less recommended style is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;First check A, then check B, then compare all fields, then consider every exception, then decide which tool to call, then call the tool, and finally explain the full process.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;A better style for GPT-5.5 is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Solve the user&amp;#39;s problem. Success criteria:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Make the decision based on available policy and account data
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- If the action is allowed, complete it before replying
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Final output includes completed_actions, customer_message, blockers
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- If key evidence is missing, ask only for the smallest necessary fields
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This does not make the prompt vague. It moves control from &amp;ldquo;process order&amp;rdquo; to &amp;ldquo;outcome and boundaries.&amp;rdquo; The model can choose its own search, reasoning, and tool-use path, but it must satisfy the success criteria.&lt;/p&gt;
&lt;h2 id=&#34;use-fewer-absolute-rules-and-more-decision-rules&#34;&gt;Use fewer absolute rules and more decision rules
&lt;/h2&gt;&lt;p&gt;Old prompts often contain many instances of &lt;code&gt;ALWAYS&lt;/code&gt;, &lt;code&gt;NEVER&lt;/code&gt;, &lt;code&gt;must&lt;/code&gt;, and &lt;code&gt;only&lt;/code&gt;. These words are not forbidden, but they should be reserved for constraints that truly cannot be violated, such as safety rules, required fields, and prohibited actions.&lt;/p&gt;
&lt;p&gt;For decisions like &amp;ldquo;when to search,&amp;rdquo; &amp;ldquo;when to ask the user,&amp;rdquo; &amp;ldquo;when to keep iterating,&amp;rdquo; and &amp;ldquo;when to stop,&amp;rdquo; GPT-5.5 is better served by decision rules.&lt;/p&gt;
&lt;p&gt;For example, instead of writing:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Always search three times first.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Write:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Start with one search that covers the core question. If the first few results already support the key facts, stop searching and answer. Continue searching only when evidence is conflicting, missing, or insufficient to support the conclusion.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This gives the model room to decide, and it also gives it a stopping condition. For products that use web search, retrieval, file search, or database queries, this matters because every additional tool call adds latency and cost.&lt;/p&gt;
&lt;h2 id=&#34;add-a-retrieval-budget&#34;&gt;Add a retrieval budget
&lt;/h2&gt;&lt;p&gt;One type of rule worth adding to GPT-5.5 prompts is a &lt;code&gt;retrieval budget&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This is not a money budget. It is a retrieval stopping rule. It tells the model when evidence is sufficient, when to keep looking, and when to admit that evidence is missing.&lt;/p&gt;
&lt;p&gt;A practical version:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;For ordinary Q&amp;amp;A, start with one broad search using short and distinctive keywords. If the first few results already support the core request, answer based on those results and do not continue searching. Add more retrieval only when results conflict, key facts are missing, or the conclusion cannot be supported.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This kind of rule reduces two common problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Too little search, producing answers without evidence.&lt;/li&gt;
&lt;li&gt;Too much search, wasting time in a tool loop.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More importantly, the documentation also reminds us that failing to find evidence should not automatically become a factual &amp;ldquo;no.&amp;rdquo; Sometimes the right behavior is to state that the evidence is insufficient, or narrow the question and continue checking.&lt;/p&gt;
&lt;h2 id=&#34;do-not-raise-reasoning-effort-too-early&#34;&gt;Do not raise reasoning effort too early
&lt;/h2&gt;&lt;p&gt;GPT-5.5 is more reasoning-efficient, so OpenAI recommends reevaluating &lt;code&gt;low&lt;/code&gt; and &lt;code&gt;medium&lt;/code&gt; instead of immediately increasing reasoning effort whenever quality is not good enough.&lt;/p&gt;
&lt;p&gt;A steadier order is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First check whether the prompt clearly defines the goal, output format, and stop conditions.&lt;/li&gt;
&lt;li&gt;Add a validation loop, such as tests, citations, review, or render checks.&lt;/li&gt;
&lt;li&gt;Add persistence rules and completion criteria for tool use.&lt;/li&gt;
&lt;li&gt;Only then raise reasoning effort if the task still needs it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In other words, &lt;code&gt;reasoning.effort&lt;/code&gt; is more like a final tuning knob. It should not replace clear prompt design.&lt;/p&gt;
&lt;p&gt;For short classification, field extraction, support ticket routing, or format conversion, start with lower reasoning cost. For long-document synthesis, conflicting-source judgment, strategy writing, or complex research, consider &lt;code&gt;medium&lt;/code&gt; or higher.&lt;/p&gt;
&lt;h2 id=&#34;textverbosity-controls-output-not-thinking&#34;&gt;text.verbosity controls output, not thinking
&lt;/h2&gt;&lt;p&gt;GPT-5.5 is highly controllable in output format. The official documentation recommends using &lt;code&gt;text.verbosity&lt;/code&gt; together with the output requirements in the prompt.&lt;/p&gt;
&lt;p&gt;The default &lt;code&gt;text.verbosity&lt;/code&gt; is &lt;code&gt;medium&lt;/code&gt;. If the product needs shorter, cleaner replies, use &lt;code&gt;low&lt;/code&gt;. But that does not mean every part of the result should become short.&lt;/p&gt;
&lt;p&gt;A typical pattern:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keep user-facing status updates and final summaries short.&lt;/li&gt;
&lt;li&gt;Still require readability when generating code, configuration, or structured results.&lt;/li&gt;
&lt;li&gt;Do not sacrifice field completeness, citations, or necessary caveats just to be &amp;ldquo;brief.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is especially useful for code products. Chat replies can be shorter, while generated code can still require readable variable names, clear structure, and necessary comments.&lt;/p&gt;
&lt;h2 id=&#34;preamble-and-phase-making-long-tasks-feel-visible&#34;&gt;preamble and phase: making long tasks feel visible
&lt;/h2&gt;&lt;p&gt;In complex tasks, GPT-5.5 may first reason, plan, or prepare tool calls before producing visible text. For streaming products, users can feel the first-token delay.&lt;/p&gt;
&lt;p&gt;The official recommendation is: for multi-step, tool-heavy, or long-running tasks, let the model send a short preamble first. It does not need to explain the full plan; it only needs to tell the user what it will do first.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;I will first inspect the relevant files and existing configuration, then suggest the changes.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;In long-running or tool-heavy Responses API workflows, also pay attention to the assistant item&amp;rsquo;s &lt;code&gt;phase&lt;/code&gt;. If the application uses &lt;code&gt;previous_response_id&lt;/code&gt;, the API keeps prior assistant state automatically. If the application manually replays assistant output, it must preserve the original &lt;code&gt;phase&lt;/code&gt; value.&lt;/p&gt;
&lt;p&gt;Common conventions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;phase: &amp;quot;commentary&amp;quot;&lt;/code&gt;: intermediate status update.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;phase: &amp;quot;final_answer&amp;quot;&lt;/code&gt;: final answer.&lt;/li&gt;
&lt;li&gt;Do not add &lt;code&gt;phase&lt;/code&gt; to user messages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This may look like a low-level implementation detail, but it matters for products with tool calls, status updates, and final answers. Losing &lt;code&gt;phase&lt;/code&gt; during manual replay can make the model confuse progress updates with final conclusions.&lt;/p&gt;
&lt;h2 id=&#34;prompt-the-model-to-check-its-work&#34;&gt;Prompt the model to check its work
&lt;/h2&gt;&lt;p&gt;Another very practical point in the GPT-5.5 guide: for tasks that can be verified, give the model validation tools and validation rules.&lt;/p&gt;
&lt;p&gt;For code agents, explicitly require:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run relevant unit tests after making changes.&lt;/li&gt;
&lt;li&gt;Run type checks or lint when necessary.&lt;/li&gt;
&lt;li&gt;Run build when the affected package is large.&lt;/li&gt;
&lt;li&gt;If full validation is too expensive, at least do the smallest smoke test.&lt;/li&gt;
&lt;li&gt;If validation cannot run, explain why and give the next best check.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For visual or page outputs, require rendering first, then checking layout, cropping, spacing, missing content, and visual consistency.&lt;/p&gt;
&lt;p&gt;For engineering plans, require mappings to requirements, affected files/APIs/systems, state transitions, validation commands, failure behavior, privacy and security considerations, and open questions that truly affect implementation.&lt;/p&gt;
&lt;p&gt;These rules are much more effective than &amp;ldquo;please be careful.&amp;rdquo; They turn &amp;ldquo;careful&amp;rdquo; into executable checks.&lt;/p&gt;
&lt;h2 id=&#34;a-prompt-skeleton-better-suited-for-gpt-55&#34;&gt;A prompt skeleton better suited for GPT-5.5
&lt;/h2&gt;&lt;p&gt;The structure in OpenAI&amp;rsquo;s docs can be simplified like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Role:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;What role you are playing and what context you are working in.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Personality
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Tone, collaboration style, whether warmth or point of view is needed.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Goal
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The user-visible target result.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Success criteria
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Conditions that must be satisfied before the final answer.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Constraints
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Safety, business, evidence, permission, cost, and side-effect boundaries.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Output
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Output structure, length, tone, and required fields.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# Stop rules
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;When to continue, retry, degrade, ask, or stop.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The point of this skeleton is not that every prompt must use all these headings. The real idea is that prompts for complex tasks should tell the model the destination, boundaries, and deliverable, instead of hard-coding every step.&lt;/p&gt;
&lt;h2 id=&#34;a-practical-order-for-migrating-old-prompts&#34;&gt;A practical order for migrating old prompts
&lt;/h2&gt;&lt;p&gt;If you already have old prompts for GPT-4.1, GPT-4o, GPT-5.2, or GPT-5.4, do not rewrite everything at once.&lt;/p&gt;
&lt;p&gt;A steadier migration order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First switch the model while keeping current reasoning effort and output parameters fixed.&lt;/li&gt;
&lt;li&gt;Run existing evals or real samples and identify behavior changes.&lt;/li&gt;
&lt;li&gt;Delete process rules that are clearly outdated, duplicated, or contradictory.&lt;/li&gt;
&lt;li&gt;Convert &amp;ldquo;step requirements&amp;rdquo; into &amp;ldquo;success criteria&amp;rdquo; and &amp;ldquo;stop conditions.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Add retrieval budgets, citation rules, and behavior for missing evidence.&lt;/li&gt;
&lt;li&gt;Add validation loops for tool tasks.&lt;/li&gt;
&lt;li&gt;Tune &lt;code&gt;reasoning.effort&lt;/code&gt; and &lt;code&gt;text.verbosity&lt;/code&gt; last.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you do not have evals, at least prepare a set of representative tasks: simple Q&amp;amp;A, complex retrieval, tool use, formatted output, refusal/degradation, and long-task completion. Do not judge prompt quality from a single demo case.&lt;/p&gt;
&lt;h2 id=&#34;a-checklist-for-migrating-old-prompts&#34;&gt;A checklist for migrating old prompts
&lt;/h2&gt;&lt;p&gt;When migrating an old prompt, start with this checklist. The goal is not simply to make the prompt shorter, but to delete ineffective constraints and rewrite important constraints into verifiable form.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Check item&lt;/th&gt;
          &lt;th&gt;Common problem&lt;/th&gt;
          &lt;th&gt;Suggested handling&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Repeated rules&lt;/td&gt;
          &lt;td&gt;The same instruction appears in multiple sections, sometimes with inconsistent wording&lt;/td&gt;
          &lt;td&gt;Merge into one clear rule and keep only the final version&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Absolute words&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ALWAYS&lt;/code&gt;, &lt;code&gt;NEVER&lt;/code&gt;, &lt;code&gt;must&lt;/code&gt;, and &lt;code&gt;only&lt;/code&gt; appear everywhere&lt;/td&gt;
          &lt;td&gt;Reserve absolute constraints for safety, compliance, permissions, and required fields&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;No stop condition&lt;/td&gt;
          &lt;td&gt;The model is told to keep searching, analyzing, or fixing without a stopping rule&lt;/td&gt;
          &lt;td&gt;Add stop rules such as evidence sufficiency, validation success, turn limits, or cost limits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;No validation command&lt;/td&gt;
          &lt;td&gt;The prompt says &amp;ldquo;ensure correctness&amp;rdquo; but gives no tests, lint, citations, or checks&lt;/td&gt;
          &lt;td&gt;Replace with concrete checks: tests, type checks, build, citations, or smoke tests&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Too much process&lt;/td&gt;
          &lt;td&gt;Every step is hard-coded, leaving no room for better paths&lt;/td&gt;
          &lt;td&gt;Rewrite as goals, success criteria, boundaries, and output requirements&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Old model patches&lt;/td&gt;
          &lt;td&gt;Rules written for older model weaknesses are still present&lt;/td&gt;
          &lt;td&gt;Remove first, then use evals to decide whether they are still needed&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Vague tool rules&lt;/td&gt;
          &lt;td&gt;The prompt only says &amp;ldquo;use tools when needed&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;Define when to call tools, when to stop, and how to degrade on failure&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Output drift&lt;/td&gt;
          &lt;td&gt;There is a format requirement but no field-completeness rule&lt;/td&gt;
          &lt;td&gt;Define required fields, optional fields, and missing-evidence behavior&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If you can only do one thing, prioritize &amp;ldquo;no stop condition&amp;rdquo; and &amp;ldquo;no validation command.&amp;rdquo; These two issues are the easiest way to turn GPT-5.5 into an infinite tool loop, or into a model that gives a polished answer without verification.&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-prompt-examples-old-vs-new&#34;&gt;GPT-5.5 prompt examples: old vs new
&lt;/h2&gt;&lt;p&gt;These are not full system prompts. They are common local rewrites during migration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example 1: retrieval Q&amp;amp;A&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Old:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Before answering, you must search at least 3 times. You must read all relevant results. You must provide a complete explanation.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;New:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Start with one search that covers the core question. If the first few results already support the key facts, stop searching and answer. If results conflict or key facts are missing, add another search. In the final answer, explain the basis; when evidence is insufficient, say so clearly.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The new version changes &amp;ldquo;number of searches&amp;rdquo; into &amp;ldquo;whether evidence is sufficient.&amp;rdquo; It gives the model a reason to continue and a reason to stop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example 2: code changes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Old:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Carefully modify the code. Do not break existing logic. Tell me what changed when finished.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;New:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Make the smallest necessary code change requested by the user. Success criteria:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Only modify files related to the task
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Preserve existing public API compatibility unless the user explicitly asks for a change
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Run relevant unit tests after the change; if they cannot run, explain why and the next best validation method
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Final summary includes changes, validation result, and remaining risks
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The new version does not vaguely ask the model to be careful. It grounds caution in file scope, API compatibility, test commands, and risk reporting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example 3: structured output&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Old:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Output JSON. Do not output extra content. Make fields complete.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;New:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Output strict JSON without Markdown. Required fields:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- status: &amp;#34;ok&amp;#34; | &amp;#34;needs_more_info&amp;#34; | &amp;#34;blocked&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- answer: string
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- evidence: string[]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- missing_info: string[]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;If evidence is insufficient, use status &amp;#34;needs_more_info&amp;#34; and do not invent evidence.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The new version does not only require JSON. It also defines a valid path when evidence is missing, so the model does not have to invent information to satisfy &amp;ldquo;complete fields.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;how-to-configure-the-parameters&#34;&gt;How to configure the parameters
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;reasoning.effort&lt;/code&gt; and &lt;code&gt;text.verbosity&lt;/code&gt; should not be viewed in isolation. The former controls how much reasoning the model invests; the latter controls how detailed the output is. A common mistake is to raise &lt;code&gt;reasoning.effort&lt;/code&gt; whenever quality is not enough, or to write harsher prompts whenever output is too long. A better approach is to configure them by task type.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Scenario&lt;/th&gt;
          &lt;th&gt;reasoning.effort&lt;/th&gt;
          &lt;th&gt;text.verbosity&lt;/th&gt;
          &lt;th&gt;Notes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Field extraction, classification, short format conversion&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;none&lt;/code&gt; or &lt;code&gt;low&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;low&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Optimize for low latency; the output schema matters most&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Support routing, simple tool routing&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;low&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;low&lt;/code&gt; or &lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Clear rules usually do not need high reasoning&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ordinary Q&amp;amp;A, light retrieval summary&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;low&lt;/code&gt; or &lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Needs some judgment, but high reasoning should not be the default&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Multi-document synthesis, conflict judgment&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;First ensure evidence rules and citations, then consider raising effort&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Complex code changes, long-task agents&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;medium&lt;/code&gt; or &lt;code&gt;high&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;User replies &lt;code&gt;low&lt;/code&gt;, code output should remain clear&lt;/td&gt;
          &lt;td&gt;Chat updates can be short; code and diff should be readable&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Strategy, planning, risk analysis&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;medium&lt;/code&gt; or &lt;code&gt;high&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;medium&lt;/code&gt; or &lt;code&gt;high&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Needs tradeoffs, risks, and assumptions&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For most applications, start with &lt;code&gt;low&lt;/code&gt; or &lt;code&gt;medium&lt;/code&gt;. Raise &lt;code&gt;reasoning.effort&lt;/code&gt; only after the prompt already defines success criteria, stop conditions, and validation rules, and the model still misses important constraints.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;text.verbosity&lt;/code&gt; is not always better when lower. Low verbosity works well for status updates, short customer support replies, and operation summaries. For code, configuration, migration plans, or audit explanations, overly short output can make the result hard to review.&lt;/p&gt;
&lt;h2 id=&#34;which-rules-should-stay&#34;&gt;Which rules should stay
&lt;/h2&gt;&lt;p&gt;Migrating to GPT-5.5 does not mean deleting the old prompt entirely. The following rules should usually stay, and they should be made more explicit.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Safety rules&lt;/strong&gt;: actions that cannot be taken, content that cannot be generated, and cases that require refusal or degradation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compliance rules&lt;/strong&gt;: industry policies, regional restrictions, age limits, audit requirements, approval requirements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacy rules&lt;/strong&gt;: personal data handling, sensitive data redaction, logging limits, data transfer limits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output fields&lt;/strong&gt;: API responses, JSON schemas, table fields, fixed structures required by frontend components.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Business boundaries&lt;/strong&gt;: refund rules, account permissions, service levels, contract scope, escalation conditions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool permission boundaries&lt;/strong&gt;: which tools can be called, which require confirmation, and which are prohibited.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Citation and evidence rules&lt;/strong&gt;: when sources are required and how to handle conflicting evidence.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are not old baggage. They are product contracts. The difference is that during migration, they should be rewritten from slogans into executable constraints.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do not leak user privacy.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Can become:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do not output full phone numbers, national ID numbers, access tokens, API keys, or internal user IDs in the final answer. When a reference is needed, show only a redacted version, such as keeping the last 4 digits of a phone number.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;what-should-not-be-accidentally-deleted&#34;&gt;What should not be accidentally deleted
&lt;/h2&gt;&lt;p&gt;The biggest danger when trimming prompts is not deleting fluff. It is deleting real system boundaries. The following content should not be removed lightly, even if it looks old.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Privacy and data handling requirements&lt;/strong&gt;: especially rules for logging, export, cross-system transfer, and third-party tool calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safety and permission limits&lt;/strong&gt;: confirmation rules for deleting data, transferring money, sending email, changing permissions, or running shell commands.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Citation format&lt;/strong&gt;: if the product depends on citations, footnotes, source lists, or audit chains, do not delete them just because they take space.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool call boundaries&lt;/strong&gt;: which tools are read-only, which are write-capable, and which require user confirmation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failure behavior&lt;/strong&gt;: how to degrade when APIs time out, data is missing, retrieval fails, or permissions are insufficient.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hard business rules&lt;/strong&gt;: pricing, refunds, bans, risk controls, and compliance review rules that the model should not improvise.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A simple rule of thumb: if deleting a rule only changes output style, consider deleting it. If deleting it could cause privilege overreach, data leakage, incorrect actions, false promises, or broken audit trails, keep it and rewrite it more precisely.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The core of the GPT-5.5 prompting guide is not &amp;ldquo;write more advanced prompts.&amp;rdquo; It is to remove over-specified process instructions from old prompts.&lt;/p&gt;
&lt;p&gt;A prompt better suited for GPT-5.5 should:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prioritize goals, not steps.&lt;/li&gt;
&lt;li&gt;Define success criteria, not just ask the model to &amp;ldquo;do well.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Include stop conditions, instead of infinite search or infinite tool loops.&lt;/li&gt;
&lt;li&gt;Include an evidence budget, instead of answering without evidence or searching forever.&lt;/li&gt;
&lt;li&gt;Include validation rules, instead of relying on the model&amp;rsquo;s self-discipline.&lt;/li&gt;
&lt;li&gt;Tune parameters later, instead of immediately raising reasoning effort.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your old system prompt is already long, the first step in migrating to GPT-5.5 may not be adding content, but deleting content. Keep the truly non-negotiable rules, and turn process details into outcomes, boundaries, and checks. That is usually more effective than continuing to pile on prompts.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;OpenAI Prompt guidance: &lt;a class=&#34;link&#34; href=&#34;https://developers.openai.com/api/docs/guides/prompt-guidance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://developers.openai.com/api/docs/guides/prompt-guidance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenAI Using GPT-5.5: &lt;a class=&#34;link&#34; href=&#34;https://developers.openai.com/api/docs/guides/latest-model&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://developers.openai.com/api/docs/guides/latest-model&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
