ChatGPTのCanvasとClaudeの
Artifactのアクセス制限の違い

ChatGPTを使って記事や長文を書いていると、横のCanvasに文章を生成する機会が増えます。
あるとき、Canvasの内容を元に要約や抽出をしようとしたら、ChatGPTが「記事本文を参照できない」と答えてきました。

<svg class="eyecatch-svg" viewBox="0 0 192 192" xmlns="http://www.w3.org/2000/svg">
  <!-- Background -->
  <rect width="192" height="192" fill="white" rx="32" ry="32" />
  
  <!-- Left Canvas (ChatGPT - Blue) -->
  <g transform="translate(24, 40)">
    <rect x="0" y="0" width="60" height="80" fill="#E3F2FD" stroke="#2196F3" stroke-width="3" rx="6" ry="6" />
    <line x1="8" y1="16" x2="52" y2="16" stroke="#2196F3" stroke-width="2" stroke-linecap="round" />
    <line x1="8" y1="28" x2="44" y2="28" stroke="#2196F3" stroke-width="2" stroke-linecap="round" />
    <line x1="8" y1="40" x2="52" y2="40" stroke="#2196F3" stroke-width="2" stroke-linecap="round" />
    <!-- Lock icon for access restriction -->
    <g transform="translate(20, 52)">
      <rect x="0" y="8" width="20" height="16" fill="#607D8B" rx="2" ry="2" />
      <path d="M 5 8 L 5 4 A 5 5 0 0 1 15 4 L 15 8" fill="none" stroke="#607D8B" stroke-width="3" stroke-linecap="round" />
      <circle cx="10" cy="16" r="2" fill="white" />
    </g>
  </g>
  
  <!-- Right Canvas (Claude - Green) -->
  <g transform="translate(108, 40)">
    <rect x="0" y="0" width="60" height="80" fill="#E8F5E9" stroke="#4CAF50" stroke-width="3" rx="6" ry="6" />
    <line x1="8" y1="16" x2="52" y2="16" stroke="#4CAF50" stroke-width="2" stroke-linecap="round" />
    <line x1="8" y1="28" x2="44" y2="28" stroke="#4CAF50" stroke-width="2" stroke-linecap="round" />
    <line x1="8" y1="40" x2="52" y2="40" stroke="#4CAF50" stroke-width="2" stroke-linecap="round" />
    <!-- Open/Edit icon -->
    <g transform="translate(16, 52)">
      <path d="M 4 24 L 4 20 L 20 4 L 24 8 L 8 24 Z" fill="#4CAF50" />
      <line x1="16" y1="8" x2="20" y2="12" stroke="white" stroke-width="2" stroke-linecap="round" />
      <line x1="2" y1="26" x2="10" y2="26" stroke="#4CAF50" stroke-width="2" stroke-linecap="round" />
    </g>
  </g>
  
  <!-- Divider line -->
  <line x1="96" y1="48" x2="96" y2="112" stroke="#9E9E9E" stroke-width="2" stroke-dasharray="4,4" />
  
  <!-- Tool icon (canmore) at bottom -->
  <g transform="translate(72, 136)">
    <circle cx="24" cy="24" r="22" fill="#2196F3" />
    <circle cx="24" cy="24" r="22" fill="none" stroke="#2196F3" stroke-width="3" />
    <!-- Wrench/Tool -->
    <g transform="translate(12, 12)">
      <path d="M 8 4 L 8 0 L 16 0 L 16 4 L 20 8 L 16 12 L 12 8 L 4 16 L 0 20 L 0 24 L 4 24 L 8 20 L 16 12 L 12 8 Z" fill="#2196F3" />
      <circle cx="2" cy="22" r="1.5" fill="white" />
    </g>
  </g>
  
  <!-- Comparison arrows -->
  <g transform="translate(88, 72)">
    
    
  </g>
</svg>ChatGPTのCanvasとClaudeの<br class="chiilabo-br is-on">Artifactのアクセス制限の違い

記事本文の全文が こちらのチャット側に提示されていないため、内容を正確に引用して脚注を付ける処理ができません。
Canvas に生成された文章は、こちらから直接参照できない仕様になっています。

生成された文章の修正を頼むと、全文を貼り直さないと処理できないと言うのです。

関連記事

1. ChatGPTのCanvasは「外部文書扱い」?

ChatGPTが生成したCanvasの全文を参照できない制限には、意外に感じました。
というのも、Canvasは、対話の中で「ChatGPTが生成した情報」で、とくにプライバシー情報ではないからです。
ChatGPTから自由に修正や要約ができた方が便利なはずです。

私は、ふだん Claude AI をよく利用しますが、
そのArtifact機能では内容を柔軟に変更できます。

ところが、ChatGPTのCanvasは自由には内容を修正できません。
正規表現を使って部分的に置換処理をします。

また、ChatGPTはCanvasの全文を会話コンテキストとして保持していないと答えました。
つまり、Canvasはチャットとは別の領域にあり、モデル側には渡されていないようです。

そのため、文章全体の処理をするには、ユーザーがCanvasの内容をチャット欄に貼り直す必要があります。
そうすれば改めてCanvasの生成し直すことはできますが、既存のCanvasを修正しているわけではありません。

1.1. Canvas は“編集用ワークスペース”ではない

Canvas は、長い文章やコードなどを「編集しながら育てていくため」の専用領域として作られた機能です。
というのも、これまでの対話では、AI に文章を作らせても編集が難しく、再利用もしにくいという問題があったからです。
Canvas は、それを解決するために導入されています。

  • 長文・コードの「編集専用スペース」
    チャット欄とは別に、記事や文書、コードを保持しておける場所。
  • 生成した文書を「更新」「部分修正」「追記」できる
    チャットから指示を出すと、Canvas の中身を正規表現で置換するなど、
    部分的な更新ができる。
  • コンテンツを「育てる」ことを前提に設計されている
    一度作った文書に、あとから脚注を追加したり、構成を変更したり、加筆したりできる。
  • ユーザーが後でコピー・共有しやすい形式で残せる
    長文をチャットログから探さなくてよくなる。

しかし、この「コンテンツを育てる」には、だいぶ制約があるわけです。
Canvas 全文を常に読めるわけではなく、ユーザーが指定した部分だけ触ります。
これは、編集用ワークスペースとしては非常に制約が強い設計です。

Canvasの実態的な役割:

  • 長文を書く人のための 編集補助エリア
  • コードや文章を 保持しつつ局所的に修正できる場所
  • ただし、全文を読ませての意図理解編集はできない

1.2. Canvas の内容を操作する仕組み(canmore)

ChatGPTのCanvas は「canmore」という専用ツールで管理されています。
canmoreは、ChatGPTが内部的にCanvas機能を操作するためのツールの名前です。
ユーザーには「Canvas」と呼ばれていますが、ChatGPTのシステム内部ではcanmoreという名前で実装されています1

canmoreツールには、3つの関数があります:

  • create_textdoc
    使用例: 「ブログ記事を書いて」
    → ChatGPTが新しいCanvasウィンドウを開いて文書を作成
  • update_textdoc
    使用例: 「この段落を短くして」
    → ChatGPTがCanvas内の文書を直接書き換え
  • comment_textdoc
    使用例: 「改善案を提案して」
    → ChatGPTが編集せず、提案コメントだけ追加

AIモデルは Canvas を直接読むことはできず、そのかわりユーザーの指示に基づいて “Canvas へのコマンドを出す” ことで操作しています。
ChatGPTは指示を元に自動的にこれらを使い分け、曖昧な指示なら canmoreツールを使わずチャットで返答します。
つまり、正規表現で差し替えるときには、AIモデルが canmore.update_textdoc を呼び、Canvas に反映しています。

ちなみに、ChatGPTには、canmoreのほかにも様々なツールが付属しています。
これまでのバージョンアップで、bio(メモリー機能)、dalle(画像生成)、browser(ウェブ検索)、python(コード実行)などのツールが追加されていて、核となる生成機能を拡張し、より便利に使えるようになっています。

2. Canvasの「安全性」

どうも、ChatGPTのCanvasは安全性と誤操作防止を重視しているようです。

  • 全文をAIが自動で読むと、勝手な改変、誤編集、大規模破壊リスクが出る
  • 部分置換の仕組みにすれば、「ユーザーが指定した部分だけ」確実に編集できる

つまり、ユーザーの文書を AI が勝手に壊さないことを保証する代わりに、
AIがCanvas全文を理解する能力は意図的に封じられている。

これは堅実な設計ですが、少し手間にも感じました。

AIに構造全体を見てもらうような作業には向いていません。
複雑な編集はチャット欄にコピーしたほうがずっと楽です。

2.1. 両者の違いを踏まえて使い分ける

ChatGPTのCanvasとClaudeのArtifactは似た機能に見えて、実は設計思想から違っています。
Canvasは安全で慎重な文書編集ツール、ArtifactはAIが主体的に扱うワークスペースという違いがあります。

どちらの仕組みも良い部分と制限がありますが、それを理解して使うとずいぶん扱いやすくなると感じました。

  1. Pliny the Liberator さん: 「 SYSTEM PROMPT LEAK here’s the sys prompt for OpenAI’s new “canvas” feature enjoy! “”” You are ChatGPT, a large language model trained by OpenAI. Knowledge cutoff: 2023-10 Current date: 2024-10-03 Image input capabilities: Enabled Personality: v2 # Tools ## bio The」 / X