[[command]]
name = "magick"
description = "ImageMagick 7's unified binary, supporting over 200 image formats. Three documented calling forms: (1) subcommand-explicit, e.g. `magick convert in.png out.png`, `magick identify in.png`, `magick mogrify ...`; (2) convert-implicit, e.g. `magick in.png -resize 1200x out.png`, which preserves the IM6 `convert` legacy syntax; (3) script-driven, `magick [...] -script script.msl [...]`, which executes an MSL (Magick Scripting Language) script — arbitrary code execution. The identify subcommand is read-only; convert, composite, compare, mogrify, montage, stream, and the legacy combine alias read inputs and write outputs (mogrify modifies in place by default). The conjure, display, animate, and import subcommands are out of scope for headless validation: conjure runs MSL scripts, display and animate launch long-running GUI viewers requiring an X server, and import captures screen content (privacy-relevant + GUI-bound). Processing crafted image files has historically been a CVE source — memory corruption in libpng/libavif, SSRF via SVG/MVG delegate programs, the ImageTragick MSL/EPHEMERAL pseudo-format issues from 2016. Modern releases ship a hardened policy.xml that restricts most pseudo-format codecs (MSL, MVG, EPHEMERAL, HTTPS, etc.) by default, which is the deeper defense layer; behavior depends on the specific build's policy.xml. ImageMagick releases frequently with security patches."
url = "https://imagemagick.org/script/command-line-tools.php"
handler = "magick"
doc_body = """
- Bare flags: --help, --version, -V, -h
- Subcommand-explicit form: `magick <sub> <args>` for sub in {compare, composite, convert, identify, mogrify, montage, stream, combine}
- Convert-implicit form: `magick <input> [options] <output>` — equivalent to `magick convert <input> [options] <output>`, validated by the convert top-level command surface
- `magick identify ...` is Inert (read-only); other forms are SafeWrite"""
