{"version":"2.1.234","anchor":"artifacts-can-now-carry-uploaded-images-video-pdfs-and-fonts","canonical_anchor":"artifacts-can-now-carry-uploaded-images-video-pdfs-and-fonts","heading":"Artifacts can now carry uploaded images, video, PDFs and fonts","tier":"use","area":"Artifacts","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.234\/e\/artifacts-can-now-carry-uploaded-images-video-pdfs-and-fonts","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.234","markdown":"### Artifacts can now carry uploaded images, video, PDFs and fonts\n\nClaude can now upload, list, read and delete images, video, PDFs and fonts attached to your published artifacts.\n\n**What**\n\nThe tool that publishes artifacts to claude.ai gained four actions for that artifact's file store: `upload_asset` sends a local file and returns a `_blob\/<id>` URL the page can reference, `list_assets` enumerates them, `read_asset` saves one back to disk (default the working directory, named by its 32-character asset id) and `delete_asset` removes one permanently. Uploads cap at 20971520 bytes, or 2097152 for SVG. Set `CLAUDE_CODE_ARTIFACT_ASSETS` to turn the actions off; they are otherwise present.\n\n**Details**\n\n- Accepted extensions are a fixed list: `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg`, `.mp4`, `.webm`, `.pdf`, `.woff2`, `.woff`, `.ttf`, `.otf`. Anything else is refused, as are network and UNC paths.\n- The actions also need the account to have the \"assets\" capability; without it the call fails as unavailable. The extra schema fields (`asset_id`, `out_dir`, `after` for paging) appear only when that capability is on.\n- Permissions are tracked per artifact and separately from artifact database access, with their own consent maps for upload and read, plus separate human-consent variants. Deletes are irreversible and every delete asks separately; reading your own artifact's assets needs no extra approval while another person's asks once per artifact; uploads either ask each time or are approved for the session.\n- Reading the source file is still checked against your Read rules (\"reading file_path is blocked by a Read permission rule \u2014 the upload was not attempted\"), and saving an asset is checked against Edit rules. Downloads land in a `.partial` file and are moved into place.\n- Results report id, content type, sha256 and a files\/bytes quota. Transcript lines read \"uploaded \u2026 as \u2026\", \"listed N assets\", \"saved \u2026\", \"asset deleted\", \"no such asset\" and \"no assets listed\". New telemetry: `artifact_asset_upload`, `artifact_asset_list`, `artifact_asset_read`, `artifact_asset_delete`.\n\n**Evidence**\n\n`read_asset only: directory to save the file into (default: the working directory). The file is named by the asset id plus the extension for its type.`, `\"no assets listed\"`, `artifactAssetUploadHumanConsentSlugs`, `artifact_asset_upload`, `'upload_asset' adds one local media, PDF, or font file to an existing artifact`, `asset_upload_read_denied`, ` For 'upload_asset', the local image, video, PDF, or font file to upload.`, `upload_asset\", \"list_assets\", \"read_asset\", \"delete_asset`\n\n- Area: Artifacts\n- Names: `CLAUDE_CODE_ARTIFACT_ASSETS`\n- Tier: Use it now\n- Useful: 4\/5\n- Signal: 4\/5"}