Here’s a number most upgrade posts skip: a brand-new empty surface in Ghostty 1.4.0 holds about 16 KiB of terminal page memory on macOS. In 1.3.1 that same empty pane sat at roughly 128 KiB. Same app. Same window. Eight times less bookkeeping before you type a character.
Ghostty 1.4.0 landed 27 October 2026 – seven months, 172 contributors, 2,889 commits. Full Kitty graphics with animation (first non-Kitty terminal at 100% of the published Kitty graphics spec), scrollback compression, ghostty +ssh, a new Linux OpenGL/EGL path, ten security advisories closed. Below is the upgrade path and the 1.4-only workflows worth turning on.
Quick context: why this release is loud
Ghostty is a free, GPU-backed terminal with native UI (Swift/AppKit on macOS, GTK on Linux/FreeBSD). Zero-config defaults still work. 1.4 moves memory, remote sessions, and image protocols in one cut.
If you leave untrusted command output on screen, the security batch alone is reason to update. The notes call out paste/CR handling, malicious Kitty graphics, tmux control-mode crashes when tmux isn’t installed, and tighter macOS OSC 8 / link-open confirmation. Detail is in the official 1.4.0 release notes.
Hands-on: get Ghostty 1.4.0 running
Confirm 1.4 before chasing features that only exist here.
# macOS - Homebrew cask mirrors the signed DMG
brew install --cask ghostty
# or: brew upgrade --cask ghostty
ghostty +version
Prefer the signed macOS app from ghostty.org/download if you skip brew. Linux packages and other binaries are listed in the binaries guide – match your distro there rather than guessing package names.
mkdir -p ~/.config/ghostty
# accepted names: config or config.ghostty
$EDITOR ~/.config/ghostty/config
Reload without restart: cmd+shift+, on macOS, ctrl+shift+, on Linux (see the config docs). Config path from the install docs: ~/.config/ghostty/config or config.ghostty.
Hands-on with Ghostty 1.4.0 features that matter
Three workflows worth flipping on release day. Use what fits your workflow.
1. Let compression give you more history for free
Idle scrollback compresses on macOS and 64-bit Linux. Official numbers: 70% to 90% less physical memory on typical text history. That paid for a default limit bump from 10 MB → 50 MB per surface – and a full buffer still often sits under the old 10 MB resident ceiling.
# defaults are already good; only touch if you need to
scrollback-compression = true
scrollback-limit-bytes = 50000000
# optional line-based cap (first limit hit wins; both accept unlimited)
# scrollback-limit-lines = 20000
Compression runs while idle; pages inflate when you scroll or search. Throughput stays put. Turns out the gotcha is the metric: savings show up in resident (RSS) memory, not virtual address space – the VA stays reserved on purpose. Activity Monitor / RSS, or you’ll swear nothing changed.
Funny how many “memory leak” screenshots are really someone reading the wrong column. Compression makes that trap louder, not quieter.
2. Fix remote TERM with ghostty +ssh
Missing xterm-ghostty on the far side? Route SSH through the wrapper and stop hand-rolling infocmp | tic on every box.
# one-off
ghostty +ssh [email protected]
# every ssh call
alias ssh='ghostty +ssh --'
Per the SSH feature page, +ssh installs Ghostty’s bundled terminfo on first successful connect, caches by host and port, and forwards useful env. No remote tic? It falls back to TERM=xterm-256color – fewer full Ghostty capabilities, but you still get a session. Flags like --terminfo=false, --forward-env=false, and --verbose exist when a host misbehaves.
3. Prove Kitty graphics animation works
Animated GIFs over the Kitty graphics protocol should play – not freeze on frame one. Relative placements move with their parent. Large payloads parse far faster (about 16× on a 64 MiB image benchmark in the notes). No special Ghostty knob. Pure VT capability work.
GTK builds also pick up a new OpenGL/EGL DMABUF pipeline with triple buffering. Fractional scaling at 125% / 150% should read sharp instead of soft.
Common pitfalls to avoid
The catch is these footguns rarely make the announcement headlines.
- Ubuntu 24.04 native builds: 1.4 wants GTK 4.18 and libadwaita 1.7. Stock 24.04 doesn’t. Flatpak, a community build that vendors newer libs, or stay on 1.3.x until the distro catches up.
- copy-on-select changed shape:
true/falsestill parse via compatibility; real values arenone,primary,clipboard, andboth. macOS default is nownone. Select-to-copy “broke”? Setcopy-on-select = clipboard(orboth). - Renames:
scrollback-limit→scrollback-limit-bytes. Writes default withclipboard-write-limit-bytesat 64 MiB. - Source builds: package maintainers need Zig 0.17 as of 1.4. Older Zig fails loudly.
- Platform floor: macOS minimum remains 13 Ventura; release notes also list newer macOS train support. Compression itself stays macOS + 64-bit Linux only.
Ever notice how terminal upgrades feel free until one deprecation quietly rewrites a muscle-memory habit? That’s the copy-on-select flip – same binary name, different default social contract on macOS.
Performance and results you can feel
Numbers below are the project’s own 1.4 benchmarks, not a third-party suite.
| Workload | Before (≈1.3) | 1.4.0 |
|---|---|---|
| ASCII parse throughput | 128 MB/s | 725 MB/s (~5.7×) |
cat 150 MB text (macOS) |
1.5 s | 566 ms |
| Resize, large scrollback | baseline | ~6× faster |
| Hidden tabs GPU (1 vis + 20 hidden) | ~385 MiB | ~18 MiB |
| Default scrollback cap | 10 MB | 50 MB (often less resident RAM) |
You feel it when you dump logs, resize a tiled layout, or leave a dozen tabs open overnight. Empty-page bookkeeping and hidden-tab GPU drop are the quiet wins; parse speed is the loud one.
When not to use Ghostty 1.4.0
Locked to Ubuntu 24.04, need a distro-native GTK build today, no Flatpak? Wait – or pin 1.3.x. Single remote that can’t install terminfo and you refuse the xterm-256color fallback? You’ll still fight TERM (though +ssh makes that rarer). Never scroll back, never SSH, never show images? 1.3.1 already felt fast. The security advisories still argue for the bump if you cat untrusted output.
FAQ
Is Ghostty 1.4.0 free?
Yes. Downloads and source cost nothing.
I upgraded and select-to-copy stopped. What do I set?
copy-on-select = clipboard (or both), then reload. macOS default is none now – full values and deprecation notes are under Common pitfalls above.
Does scrollback compression slow down heavy output?
Official stance from the 1.4 notes: compress on idle, inflate on scroll/search, no measurable I/O hit in their testing. Sustained blast output can keep more pages resident to protect speed, then shrink once things quiet down. A/B it with scrollback-compression = false, reload, same workload – compare RSS, not virtual size.
Next move: upgrade, run ghostty +version, add alias ssh='ghostty +ssh --' for a week, and watch resident memory on a log-heavy tab. That’s 1.4.0 in practice.