---
title: 접두사 검사에 실패하지 않고 도구 또는 지침 변경하기
url: https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions
description: 지침, 도구, 알림 또는 요약을 보내거나, 저장된 대화를 재개하거나, 다른 사람의 요청을 전달하면서도 Claude가 이전 사고를 유지하도록 하는 방법입니다.
featureMetadata:
  status: stable
  supportedModels:
    - claude-fable-5-2
    - claude-mythos-5-2
    - claude-fable-5-1
    - claude-mythos-5-1
    - claude-opus-5-5
    - claude-sonnet-5-5
    - claude-haiku-5-5
  supportedPlatforms:
    Claude API: stable
    Amazon Bedrock: stable
    Amazon Bedrock (bedrock-runtime): stable
    Claude Platform on AWS: stable
    Claude Models on Google Cloud (Anthropic managed): stable
    Claude Models on Google Cloud (Google managed): stable
    Microsoft Foundry: stable
---

도구, 지침 또는 기타 컨텍스트를 업데이트하려면 이미 보낸 내용은 모두 그대로 두고, 업데이트를 끝에 추가하여 그 자리에 남겨 두세요. “preserved thinking”(보존된 사고)이 있는 모델에서는 보낸 내용을 변경하면 그 뒤의 사고가 무효화될 수 있으며, [요청이 실패할 수 있습니다](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/prefix-checks#outcomes).

보존된 사고를 지원하는 모델은 Claude Fable 5.2, Claude Mythos 5.2, Claude Fable 5.1, Claude Mythos 5.1, Claude Opus 5.5, Claude Sonnet 5.5, Claude Haiku 5.5입니다.

## 어시스턴트 턴을 정확히 그대로 다시 보내기

각 응답의 `content` 배열 전체를 순서대로 다시 보내세요. 텍스트가 비어 있는 사고 블록도 포함해야 합니다. 텍스트가 비어 있는 블록도 완전한 블록입니다. 그 `signature`가 추론을 암호화된 형태로 담고 있기 때문입니다. [`fallback` 블록](https://platform.claude.com/docs/ko/build-with-claude/refusals-and-fallback#continuing-the-conversation)이 포함된 턴에는 별도의 규칙이 있습니다.

[직렬화기, 필터, 스트림 파서](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#append-assistant-turns-exactly-as-returned-details)가 이를 깨뜨릴 수 있습니다.

## 지침 변경하기

`system`은 모든 요청에서 동일하게 유지하세요. 여러분의 지침은 끝에 있는 `role: "system"` 메시지에 넣고, 무언가 변경되었을 때만 보내세요. Claude는 이를 운영자인 여러분의 지침으로 취급합니다. 나중에 삭제하거나 문구를 바꾸면 그 뒤의 사고가 무효화되므로, 대화가 끝날 때까지 그대로 두세요. [사용자의 말](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#user-words)에는 별도의 규칙이 있습니다.

매 턴마다 함께 보내야 하는 알림은 다릅니다: [스스로 지워지는 알림을 보내세요](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#per-turn-reminders).

시스템 메시지는 가장 최근의 사용자 메시지 뒤에 위치하며, [도구 결과](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#new-instructions-details)가 있는 사용자 메시지라도 마찬가지입니다. 텍스트 또는 도구 블록이 있는 시스템 메시지가 Claude의 턴 바로 뒤나 사용자 메시지 바로 앞에 오면 400 오류가 발생합니다. 따라서 Claude의 턴이 마지막이라면 다음 사용자 메시지가 자리를 잡을 때까지 기다리세요.

시스템 메시지가 Claude가 지침을 따른다는 것을 보장하지는 않으므로, 읽기 전용 모드와 같은 제한은 도구를 실행하는 코드에서 적용하세요. 일부 모델은 [시스템 메시지를 허용하지 않습니다](https://platform.claude.com/docs/ko/build-with-claude/mid-conversation-system-messages).

## 다른 사람이 편집할 수 있는 텍스트

다른 사람이 편집할 수 있는 `AGENTS.md`나 `CLAUDE.md` 같은 파일, 또는 저장된 메모리를 Claude가 신뢰하기를 사용자가 기대할지 생각해 보세요. 그렇지 않다면 첫 번째 버전을 포함하여 그 텍스트는 `tool_result` 블록에만 넣어 보내세요. 그 이유는 [간접 프롬프트 인젝션](https://platform.claude.com/docs/ko/test-and-evaluate/strengthen-guardrails/mitigate-jailbreaks#indirect-prompt-injection)을 참조하세요.

그러한 텍스트를 시스템 메시지나 사용자 메시지의 텍스트에 넣지 말고, 새 대화에서는 `system`에도 넣지 마세요.

그러한 파일을 로드하거나 파일이 변경되면, 텍스트를 포함하지 말고 Claude에게 도구로 읽으라고 알리세요. 또는 다음 사용자 메시지 뒤에 도구 호출과 그 결과를 직접 추가하세요: `tool_use` 블록이 있는 `assistant` 메시지, 그리고 그 텍스트를 담은 `tool_result` 블록이 있는 `user` 메시지입니다. 단계는 [도구 호출 직접 작성하기](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#write-the-tool-call)를 참조하세요.

사용자가 Claude가 따르기를 기대하는 파일은 사용자 메시지에 넣을 수 있습니다. 여러분만 제어하는 지침 파일은 시스템 메시지에 넣을 수 있습니다: 한 번 로드하고, 업데이트된 각 버전을 추가하세요.

## 날짜, 파일 또는 기타 컨텍스트 업데이트하기

`system`과 첫 번째 메시지는 한 번만 구성하고, 모든 요청에서 변경 없이 보내세요.

업데이트된 값은 보내려는 사용자 메시지의 별도 텍스트 블록에 넣되, [도구 결과가 있다면 그 뒤에](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#user-words) 넣으세요:

```json
{
  "role": "user",
  "content": [
    { "type": "text", "text": "Environment update: the current branch is now release-2." },
    { "type": "text", "text": "Run the tests again." }
  ]
}
```

값이 변경될 때만 명시하고, 그대로 두세요.

코드가 메시지에 추가하는 모든 컨텍스트는 해당 메시지와 함께 저장하세요. 그렇지 않으면 다음 요청에서 같은 사고 앞에 다른 내용이 보내집니다.

## 도구 추가, 제거 또는 끄기

`tools`는 모든 요청에서 동일하게 유지하세요. `tools`에서 [지연된 도구](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#deferred-tools)를 제외한 도구를 추가, 변경 또는 제거하면, `tools`가 대화의 모든 사고보다 앞에 오기 때문에 이미 대화에 있는 사고가 무효화됩니다. 설명에서 문장 하나의 문구만 바꿔도 그렇게 됩니다.

도구를 추가하거나 제거하려면 `tool_addition` 또는 `tool_removal` 블록이 있는 시스템 메시지를 추가하고 [해당 경우에 맞는 베타 헤더](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#tool-changes-details)를 보내세요. MCP 서버나 플러그인이 연결될 때도 마찬가지로 하세요.

한 요청에 대해 도구를 끄려면 `tool_choice: {"type": "none"}`을 설정하고, `tools`는 그대로 유지하세요.

## 이전 턴 잘라내기 또는 요약하기

최근 턴을 그 사고와 함께 유지하려면, [유지된 사고에 대한 조건](https://platform.claude.com/docs/ko/build-with-claude/compaction-thinking-blocks#conditions-for-kept-thinking-to-stay-valid)에 따라 [“on-demand compaction”(온디맨드 압축)](https://platform.claude.com/docs/ko/build-with-claude/compaction-on-demand#request-a-summary)으로 API가 요약을 작성하도록 하세요. API가 반환하는 압축 블록으로 `messages`를 시작하고, 그 블록이 요약하는 메시지는 제거하세요.

자체 코드가 요약을 작성하거나 요약 없이 이전 턴을 잘라내는 경우, [유지된 턴의 사고를 제거하거나 `"drop_block"`을 보내세요](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#server-side-trimming-details). 새로 잘라낼 때마다 유지된 턴의 사고가 다시 무효화되므로, 잘라내기는 드물게, 큰 단위로 하세요. 대신 오래된 도구 결과를 지우려면 [“context editing”(컨텍스트 편집)을 사용하세요](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#clear-old-content).

## 대화 저장, 재개 또는 포크하기

보낸 내용과 받은 내용을 저장하고, 정확히 그대로 보내세요. 재개된 대화는 일반적인 다음 요청입니다: `system`, `tools`, 그리고 이전 `messages`는 원래 가지고 있던 값을 그대로 가져야 합니다. 포크의 경우, 분기의 지침은 첫 번째 새 사용자 메시지나 그 뒤의 시스템 메시지에 넣으세요. 사고는 기록이 다른 대화로 옮겨갈 수 없습니다: 대신 요약으로 그 대화를 시작하세요.

시스템 프롬프트나 도구를 변경하는 릴리스는 이미 진행 중인 대화에서의 변경입니다. 코드를 “append-only”(추가 전용)로 만드는 수정도 그럴 수 있습니다. 진행 중인 각 대화에는 마지막으로 성공한 요청의 `system`과 `tools`를 계속 보내세요. 그 대화의 가장 최근 사고는 그 버전 이후에 생성되었기 때문입니다. 이전 버전으로 되돌아가면 그 사고가 무효화됩니다.

새 대화에서는 업데이트된 `system`과 `tools`를 사용하세요. 릴리스가 안전을 위해 도구를 제거하거나 지침을 변경하는 경우, 진행 중인 대화에도 적용하세요. [`tool_removal` 블록](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#tool-changes)이나 [시스템 메시지](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#new-instructions)를 추가하세요.

## 비밀, 개인 데이터 또는 주입된 텍스트 제거하기

안전과 개인정보 보호가 사고를 유효하게 유지하는 것보다 우선합니다. 메시지에 삭제해야 하는 비밀이나 개인 데이터가 있다면 해당 텍스트를 제거하세요. 그 텍스트를 반복하는 모든 메시지와 요약에서도 제거하세요.

주입된 지침이 있는 도구 결과의 경우, 그 내용을 "제거됨." 같은 짧은 메모로 바꾸세요. `tool_result` 블록 자체는 유지하세요. 해당 `tool_use`에는 `tool_result` 블록이 하나 필요하기 때문입니다. [압축 블록](https://platform.claude.com/docs/ko/build-with-claude/compaction)에 그 텍스트가 있다면 블록을 삭제하고, 자체 요약에서 시작하세요.

그런 다음 텍스트가 처음 나타난 위치 이후의 모든 `thinking` 및 `redacted_thinking` 블록을 삭제하세요. 텍스트가 `system`이나 `tools`에 있었다면 모든 블록이 해당됩니다. 각 블록은 그 텍스트를 반복할 수 있으며, 여러분은 블록 안의 내용을 읽거나 편집할 수 없습니다. 여기서는 `"drop_block"`을 보내는 것만으로는 충분하지 않습니다. 저장된 기록에 해당 블록이 남기 때문입니다. 대화는 그 추론 없이 계속됩니다.

주입된 결과 이후, 후속 턴이 이미 그에 따라 행동했을 수 있습니다. 그 이후 이루어진 도구 호출을 확인하고, 필요한 것을 되돌리세요.

## 기술 세부 사항

### 코드가 어시스턴트 턴을 변경하는 방식

* “serializer”(직렬화기)가 알지 못하는 블록 유형을 제외하거나, 블록의 순서를 바꾸거나, 병합하거나, 분할합니다. 그러면 이후의 모든 블록 앞에 온 내용이 바뀝니다.
* 코드가 비어 보이는 사고 블록을 건너뜁니다. 모두 건너뛰면 Claude는 그 추론을 잃습니다. 일부만 건너뛰면 그 공백이 뒤따르는 사고를 무효화합니다.
* 직접 작성한 스트림 파서가 텍스트를 받지 못한 사고 블록을 제외합니다. SDK의 스트림 헬퍼는 이를 유지합니다.

### 사고 생략하기

Claude는 여러분이 생략한 추론을 잃습니다. 가장 오래된 블록, 가장 최근 블록 또는 전부를 생략할 수 있지만, 중간의 블록은 생략하지 마세요. 각 블록은 자신이 어떤 블록 다음에 생성되었는지를 기록하므로, 공백이 생기면 그 뒤의 블록이 무효화됩니다. 한 턴에서 다른 블록 없이 이어진 사고 블록들은 함께 접두사 검사를 받으므로, 모두 생략하거나 하나도 생략하지 마세요. 한 번 생략한 블록은 계속 생략하세요.

도구 호출이 열려 있는 동안에는 [해당 턴의 사고를 다시 보내서](https://platform.claude.com/docs/ko/build-with-claude/thinking#preserving-thinking-blocks) Claude가 자신의 추론을 가지고 해당 라운드를 마치도록 하세요.

### 도구 루프에서 여러분의 지침

메시지는 다음 순서로 배치됩니다:

```json
[
  {
    "role": "assistant",
    "content": [
      { "type": "thinking", "thinking": "", "signature": "..." },
      {
        "type": "tool_use",
        "id": "toolu_01",
        "name": "run_tests",
        "input": { "path": "tests/" }
      }
    ]
  },
  {
    "role": "user",
    "content": [
      { "type": "tool_result", "tool_use_id": "toolu_01", "content": "2 failed, 48 passed" }
    ]
  },
  {
    "role": "system",
    "content": "Plan mode is off. You can edit files."
  }
]
```

### 도구 호출 직접 작성하기

첫 번째 요청에서 파일을 읽는 도구를 선언하거나 [나중에 시스템 메시지로 추가하고](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#tool-changes), 코드가 해당 도구에 대한 Claude의 호출에 응답하도록 하세요. 다음 사용자 메시지 뒤에 해당 도구에 대한 `tool_use` 블록이 있는 `assistant` 메시지를 추가하세요. 그 바로 뒤에, 일치하는 `tool_use_id`를 가지고 파일의 텍스트를 담은 `tool_result` 블록이 있는 `user` 메시지를 추가하세요. Claude는 그 뒤에 응답합니다:

```json
[
  { "role": "user", "content": "Run the tests again." },
  {
    "role": "assistant",
    "content": [
      {
        "type": "tool_use",
        "id": "toolu_app_agents_md_1",
        "name": "read_file",
        "input": { "path": "AGENTS.md" }
      }
    ]
  },
  {
    "role": "user",
    "content": [
      {
        "type": "tool_result",
        "tool_use_id": "toolu_app_agents_md_1",
        "content": "The file's text"
      }
    ]
  }
]
```

둘 다 그대로 두고, 새 버전마다 새 `id`를 가진 새 쌍을 추가하세요.

### 도구 루프에서의 사용자의 말과 업데이트된 값

Claude가 작업하는 동안 사용자가 입력한 내용을 전달하는 경우, `tool_result` 블록을 담은 사용자 메시지를 보내기 전에 추가하세요. 마지막 `tool_result` 뒤의 텍스트 블록으로 만드세요.

여러분에게서 나온 값은 대신 시스템 메시지에 넣을 수 있습니다. 도구 결과 뒤에서 Claude Sonnet 5.5와 Claude Haiku 5.5는 시스템 메시지에 있는 사용자의 말을 프롬프트 인젝션으로 간주하여 무시할 수 있습니다. Claude Sonnet 5.5는 여러분 자신의 지침과 알림이 도구 결과가 올 때마다 매번 그 뒤에 오는 경우에도 마찬가지로 그럴 수 있습니다.

턴이 아직 결과가 없는 [서버 도구](https://platform.claude.com/docs/ko/agents-and-tools/tool-use/handle-tool-calls)도 호출했거나 프로그래밍 방식 도구 호출을 사용한 경우, 도구 결과가 있는 사용자 메시지에는 `tool_result` 블록만 있어야 합니다. 그런 경우 텍스트는 다음 사용자 메시지에 추가하세요.

### 시스템 메시지를 허용하지 않는 모델

Claude API에서는 보존된 사고가 있는 모든 모델이 시스템 메시지를 허용합니다. 허용하지 않는 모델에 대해서는 [모델이 시스템 메시지를 허용하지 않는 경우](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking#unchosen-switches-details)를 참조하세요.

### 한 턴 동안 알림 보내기

알림은 [턴 범위 시스템 메시지](https://platform.claude.com/docs/ko/build-with-claude/mid-conversation-system-messages#turn-scoped-system-messages)로 보내세요: `clear_at: "next_user_message"`를 설정하고, 베타 헤더 `mid-conversation-system-clear-at-2026-08-21`을 보내세요. 이 메시지는 `tool_result` 블록을 담은 사용자 메시지 뒤에 위치합니다:

```json
{
  "role": "system",
  "clear_at": "next_user_message",
  "content": "Run the linter before you report that a task is done."
}
```

다음 사용자 메시지에서는, `tool_result` 블록만 있는 메시지라도, API가 이를 지우므로 Claude는 더 이상 이를 읽지 않습니다. Claude Sonnet 5.5에서는 [도구 결과가 올 때마다 매번 그 뒤에 알림을 보내지 마세요](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#user-words). 지워졌든 아니든 모든 알림을 `messages`에 유지하세요. 단, [제거해야 하는 내용이 들어 있는 경우](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/change-tools-or-instructions#remove-sensitive-content)는 예외입니다. 알림을 제거하거나 문구를 바꾸면 그 뒤의 사고가 무효화됩니다.

헤더가 없으면 일반 시스템 메시지를 보내고 그대로 두세요. 이 메시지는 절대 지워지지 않으므로 알림이 쌓입니다. 시스템 메시지를 받지 않는 모델에서는 사용자 메시지의 텍스트 블록을 사용하세요.

### 도구 변경에 필요한 블록과 베타 헤더

각 헤더를 지원하는 플랫폼은 [대화 중간 시스템 메시지 및 도구 변경](https://platform.claude.com/docs/ko/build-with-claude/mid-conversation-system-messages)을 참조하세요.

* **시작할 때 모든 도구를 알고 있는 경우:** 첫 번째 요청에서 모두 선언하고, 나중에 제공할 도구에는 `defer_loading: true`를 설정하세요. 그런 다음 시스템 메시지의 `tool_addition` 또는 `tool_removal` 블록에서 도구 이름을 지정하세요. 베타 헤더: `inline-tools-2026-09-15` 또는 `mid-conversation-tool-changes-2026-07-01`.
* **나중에 도구를 알게 되거나, 스키마가 변경되는 도구가 있는 경우:** 시스템 메시지의 `tool_addition` 블록에서 도구를 정의하세요. 베타 헤더: `inline-tools-2026-09-15`.
* **`inline-tools-2026-09-15` 헤더가 없는 플랫폼에서 나중에 도구를 알게 된 경우:** `defer_loading: true`를 설정하여 `tools`의 끝에 도구를 추가하고(이는 변경이 아닙니다), 그런 다음 이름으로 제공하세요. 베타 헤더: `mid-conversation-tool-changes-2026-07-01`.
* **Claude API에서 MCP 커넥터를 통해 MCP 서버를 나중에 연결하는 경우:** `tool_addition` 블록에서 해당 `mcp_toolset`을 정의하세요. 베타 헤더: `inline-tools-2026-09-15` 및 `mcp-client-2026-09-15`.

MCP 서버의 도구 목록이 변경될 수 있다면 [MCP 서버의 도구 목록 고정](https://platform.claude.com/docs/ko/agents-and-tools/mcp-connector#pin-mcp-tool-list)을 참조하세요.

이 시스템 메시지는 선언된 도구를 이름으로 제공하고 다른 도구를 정의하며, 이를 위해 `inline-tools-2026-09-15`가 필요합니다:

```json
{
  "role": "system",
  "content": [
    {
      "type": "tool_addition",
      "tool": { "type": "tool_reference", "name": "search_tickets" }
    },
    {
      "type": "tool_addition",
      "tool": {
        "type": "tool_definition",
        "definition": {
          "name": "get_weather",
          "description": "Get the current weather in a city.",
          "input_schema": {
            "type": "object",
            "properties": { "city": { "type": "string" } },
            "required": ["city"]
          }
        }
      }
    }
  ]
}
```

### `defer_loading`이 있는 도구와 이를 언급하는 400 오류

`defer_loading: true`가 설정된 도구는 메시지나 도구 검색 결과가 이를 참조할 때까지 Claude의 컨텍스트와 “prefix check”(접두사 검사)에서 제외됩니다. 그때까지는 이를 추가, 업데이트 또는 제거해도 변경이 아닙니다. 그 이후에는 변경입니다. `defer_loading`을 켜거나 끄는 것도 `tools`를 변경하는 것으로 간주됩니다.

지연되지 않은 도구를 최소 하나 선언하세요. 그렇지 않으면 요청에서 `defer_loading`을 언급하는 400 오류가 발생할 수 있습니다.

### 오래된 결과와 이미지 줄이기 또는 지우기

도구 결과나 이미지는 처음 보내기 전에 줄이거나 다운스케일하세요. 코드가 이미 보낸 내용을 지우거나, 줄이거나, 다시 인코딩하면 그 뒤의 사고가 무효화됩니다. 나중에 그 안의 이미지를 포함하여 오래된 도구 결과를 지우려면 컨텍스트 편집을 사용하세요. `clear_tool_uses_20250919` 유형의 편집이 있는 `context_management`와 베타 헤더 `context-management-2025-06-27`을 보내세요. 전체 요청과 옵션은 [컨텍스트 편집](https://platform.claude.com/docs/ko/build-with-claude/context-editing#tool-result-clearing)을 참조하세요.

### URL로 보내는 파일

URL로 보낸 파일의 경우, API는 가져온 바이트를 비교합니다. 따라서 서명된 URL이 만료되었을 때 같은 파일에 대한 새 URL을 사용해도 괜찮습니다. URL 뒤의 콘텐츠가 변경될 수 있다면 첫 번째 요청부터 `file_id`나 base64를 보내세요.

### 자체 코드가 이전 턴을 요약하거나 잘라내는 경우

자체 요약이나 잘라내기 후에는, 유지된 턴의 사고가 뒤따르던 메시지가 사라졌으므로 해당 사고가 [접두사 검사](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/prefix-checks#prefix-check)에 실패합니다. 그 사고를 제거하거나 [`"drop_block"`을 보내세요](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/prefix-checks#preserved-thinking-controls). Claude는 사고 없이도 그 턴을 계속 읽습니다.

### 라이브러리, 프록시, 게이트웨이

다른 사람의 요청이 여러분의 코드를 거치는 경우, 여러분의 재작성은 그들의 기록을 변경하며, 그들은 그 변경을 보거나 수정하지 못할 수도 있습니다. 400 오류를 숨기지 마세요. 호출자를 위해 복구하는 경우, 그들의 기록에는 여전히 변경이 남아 있으므로 그 사실을 알리세요.

* `anthropic-beta` 값과 `thinking.block_binding`은 보낸 그대로 전달하세요. 게이트웨이가 알려진 필드만 허용하는 경우 `thinking.block_binding`과 헤더 값 `thinking-binding-controls-2026-08-01`을 추가하세요. 그렇지 않으면 사용자가 `"drop_block"`을 선택할 수 없습니다.
* 베타 헤더를 제거하고 설정만 전달하지 마세요. 그런 요청에는 400 오류가 발생합니다.
* 텍스트가 비어 있는 사고 블록과 `input_transformations` 배열을 호출자에게 반환하세요.
* `role: "system"` 메시지는 있는 위치에 그대로 두세요. `system`으로 옮기면 이미 대화에 있는 사고가 무효화됩니다.
* [`prefix_mismatch_behavior`](https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/prefix-checks#preserved-thinking-controls)를 `"error"`로 설정하여 테스트하세요. 이렇게 하면 보존된 사고가 있는 모든 모델에서 오류가 발생합니다.

## 다음 단계

<CardGroup cols={2}>
  <Card title="보존된 사고" icon="book" href="https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking">
    보존된 사고란 무엇인지, 사고 블록이 무엇에 연결되는지, 그리고 모델 또는 계정 전환에 대해 알아보세요.
  </Card>

  <Card title="다른 대화에 바인딩된 사고 블록 수정하기" icon="wrench" href="https://platform.claude.com/docs/ko/build-with-claude/preserved-thinking/fix-bound-to-a-different-conversation">
    실패하는 대화를 복구하고, 사고 제외의 비용을 확인하세요.
  </Card>

  <Card title="대화 중간 시스템 메시지 및 도구 변경" icon="message" href="https://platform.claude.com/docs/ko/build-with-claude/mid-conversation-system-messages">
    시스템 메시지와 도구 변경이 들어가는 위치, 그리고 이를 지원하는 모델과 플랫폼을 알아보세요.
  </Card>
</CardGroup>
