Terminals and Shells Release Notes

Updates for terminal emulators and command-line shells.

Get this feed:

Products (4)

Latest Terminals and Shells Updates

  • Nov 5, 2026
    • Date parsed from source:
      Nov 5, 2026
    • First seen by Releasebot:
      Nov 11, 2026
    Warp logo

    Warp

    Changelog — 2026

    Warp ships fixes that improve MCP compatibility, prevent custom inference endpoints from being blocked when credits run out, and make cloud agent cloning, reconnections, and startup more reliable.

    Warp release notes for 2026. Updates ship weekly, typically on Thursdays.

    Bug fixes

    • Fixed custom inference endpoints being blocked when Warp credits run out. (#16493) — @mvanhorn ✨
    • Fixed MCP connections to older servers that reject an unnegotiated protocol-version HTTP header. (#16698)
    • Fixed connections to legacy MCP servers that reject newer protocol revisions with a transport-level version error. (#16620)

    Oz updates

    • Optimized Git repository clones in Warp cloud agents (#16552)
    • Fixed idle Oz agent sessions failing after repeated reconnections. (#16696)
    • Fixed commands being blocked while session sharing starts, which could stall cloud agent startup. (#16544)
    Original source
  • Nov 3, 2026
    • Date parsed from source:
      Nov 3, 2026
    • First seen by Releasebot:
      Nov 4, 2026
    iTerm2 logo

    iTerm2

    iTerm2 Version 3.7.7

    iTerm2 releases version 3.7.7 with browser automation, expanded shell and SSH integration, password export, and stronger remote and tmux workflows. The update also brings extensive fixes across AI, Python APIs, downloads, accessibility, performance, and security.

    Version 3.7.7 of iTerm2 was built on November 3,
    2026.

    New Features:

    • it2 session set-status has a new --progress
      option that starts or stops the tab’s progress
      indicator for a program that reports through
      hooks but does not draw the indicator itself.
      The set_session_status Python API function
      takes the same progress argument.
    • The hook program for Claude Code and Codex is
      now it2 handle-agent-hook (add --agent codex
      for Codex), so the hook works wherever it2
      does. Existing Claude Code installs keep
      working; reinstalling the integration updates
      the hook entries.
    • it2 session add-clipping and
      archive-clippings accept --tmux and
      --tmux-pane, and every addressing option
      accepts an empty value as “not given”, so a
      script can pass all of them and let it2 pick.
    • The Python API can now run JavaScript in a
      browser session’s page and get the result
      back with Session.async_eval_javascript, so a
      script can read a page or fill in a form
      without clicking on the screen. The first time
      a script does this on a site, iTerm2 asks you
      to allow it. You can review and change these
      permissions, and those for loading URLs, in
      Settings > General > Magic.
    • You can hide a browser session’s toolbar so the
      page fills the pane with Web > Show Toolbar, or
      from the Python API with
      Session.async_set_browser_toolbar_hidden.
    • nushell is now a supported shell for shell
      integration, including automatic loading and
      SSH integration.
    • Passwords saved in the Password Manager’s
      Keychain storage can now be exported to a
      passphrase-encrypted .iterm2passwords file and
      imported on another Mac. Use Export Passwords…
      and Import Passwords… in the Password Manager’s
      settings menu, or double-click the file.
      Settings > General > Export All Settings and
      Data can also include them.
    • When a host reached through SSH Integration
      asks to use it2, you can now choose “Always
      Allow This Host” so it is not asked again on
      later connections. Review or remove these hosts
      in Settings > General > Magic > API access
      over ssh.
    • The Claude Code integration can now be
      installed on a host reached through SSH
      Integration, so Claude Code running there
      reports its status too. Choose iTerm2 > Install
      Claude Code Integration from a session on that
      host, including a tmux Integration pane there.
      Uninstalling removes it from every host you are
      connected to.

    Improvements:

    • Python API context menu items can be grouped
      into submenus and shown only in sessions where
      an expression is true, such as a user variable
      your script sets. See ContextMenuProviderRPC’s
      submenu and visible_when arguments.
    • If you customized the Code Review system
      prompt, iTerm2 offers to update it the next
      time a review starts, so reviews work in tmux
      and on remote hosts. It shows the changes
      first, and changes nothing else in your prompt.
    • Downloading a file or folder with “Download
      using SSH Integration” is much faster. It
      used to wait for each kilobyte before asking
      for the next.
    • The Python API now has type annotations, so
      editors and type checkers such as mypy can
      check scripts that use it.
    • “Support basic HTML tags in tab titles” now
      applies to pane title bars too, so , ,
      and render as styled text there instead of
      appearing literally. The window title shows
      the text without the tags, including titles set
      by a program or by tmux.
    • In iTerm2 Buddy, you can now tap, scroll, and
      type into a web browser session from your
      phone, and use back, forward, reload, and an
      address field. The phone’s keyboard comes up
      when a text field on the page has focus.
      Requires an up-to-date iTerm2 Buddy.
    • On a host reached through SSH Integration, it2
      is now a real command in ~/.iterm2/bin rather
      than a shell function, so scripts, sh -c, and
      tools such as Claude Code’s Bash tool can run
      it, not just an interactive shell. Commands
      that read standard input now receive it.
    • On a host reached through SSH Integration, an
      it2 command that names no session now acts on
      the session it runs in rather than the focused
      one.
    • A command run on a host with it2ssh host
      command, or by an SSH profile, can now use it2,
      as an interactive shell there can.
    • it2ssh now loads shell integration on the
      remote host by default, whatever the current
      profile’s Load Shell Integration Automatically
      setting. Run it2ssh --no-shell-integration to
      skip it. SSH profiles still follow their own
      setting.
    • it2 now works on a host reached through SSH
      Integration when the shell is tcsh, and when
      shell integration is not loaded there. Without
      it iTerm2 copies nothing to the host, so it2
      has to be installed there.
    • The git status bar component now shows the
      status of a repository on a host reached
      through SSH Integration, by running git there.
      It used to need it2git set up on the host.
    • Shell integration now loads inside tmux,
      including on a host you ssh to from a tmux
      pane, so marks, the current directory and
      host, and the git status work there. It used
      to need the environment variable
      ITERM_ENABLE_SHELL_INTEGRATION_WITH_TMUX. It
      still skips itself in GNU screen.
    • In a tmux Integration pane on a host reached
      through SSH Integration, the git status bar
      component and other features that depend on
      the session’s host now work without shell
      integration loaded in the pane.
    • With it2git on a remote host, the git status
      bar component now counts changes the same way
      as for a repository on this Mac: every
      untracked file counts, conflicts are not
      counted as changes, and a detached HEAD shows
      its full commit ID.
    • In a tmux Integration session on a host reached
      through SSH Integration, each pane now knows
      which program is running in it. The tab shows
      the job, the Jobs tool lists the pane’s
      processes, and triggers that watch for a
      program, such as entering the Claude Code
      workgroup, work there.
    • SSH Integration now paces output from the
      remote host, so a program that prints a lot no
      longer fills the connection’s buffers. Control-C
      takes effect at once instead of after minutes
      of buffered output on a slow link, and typing
      stays responsive while output streams.
    • On macOS 26, iTerm2 no longer lets macOS index
      its window and tab titles for search. Titles
      change constantly in a terminal, and indexing
      each one used a lot of CPU in Spotlight’s
      background processes.

    Bug Fixes:

    • Dragging a tab or pane no longer stutters
      with many windows open when the tab bar is
      always shown.
    • The browser’s address field no longer runs
      under the loading spinner while a page loads,
      and returns to its full width afterward.
    • Fixed more cases where a window could be made
      wider but not narrower.
    • If iTerm2 quits unexpectedly while tmux
      integration is attached, and you switched to
      another app at some point after attaching,
      tmux integration resumes when iTerm2
      relaunches with window restoration on.
      Before, the session that ran tmux -CC could
      show raw tmux output instead.
    • If iTerm2 quits unexpectedly after you
      detach from tmux integration, the session
      that ran tmux -CC no longer gets tmux
      commands typed into its shell when window
      restoration brings it back.
    • In an AI chat with an empty message field, the
      “↩ to submit” hint no longer overlaps a long
      placeholder.
    • With KeePassXC as the browser password
      manager, “Remember this password” for a
      website’s sign-in dialog now saves the
      password instead of failing with “Could not
      save the password”.
    • Hardened the handler for x-man-page: URLs so a
      malicious URL can no longer be crafted to run
      an unexpected command or make man render an
      arbitrary local file. Man section and page
      names are now checked against an allowlist of
      characters, and a URL with disallowed
      characters is rejected with a warning instead
      of opening. Thanks to vin01 for finding this
      vulnerability and to Gurpreet Shergill
      (@giki-shergill) for reporting it.
    • Dragging a split divider in a tmux window
      now leaves the panes the way the drag showed
      them. Before, a different divider could move,
      or panes beside the divider could jump to
      other sizes when the drag ended.
    • Fixed a crash from a trigger in a Dynamic
      Profile whose parameter has an unexpected
      type, such as a list. A text parameter
      written as a number, such as text to send, is
      now used as text instead of being ignored.
    • Shell > SSH > Disconnect now recovers an SSH
      Integration session whose local it2ssh process
      was killed, even while the remote host is
      printing output. Previously the session
      stopped showing output and ignored input.
      Disconnect also works before advanced SSH
      features have started, instead of saying it
      can’t disconnect.
    • After using tmux integration in an SSH
      Integration session, ending ssh no longer
      leaves the session ignoring typed text until
      Return is pressed.
    • Ending an SSH Integration session no longer
      sometimes types YXV0b3BvbGw= into the local
      shell, or leaves the tab unable to start
      another it2ssh connection.
    • A session no longer stops taking input when
      it2ssh is run on a host that was itself
      reached with it2ssh but lacks the Python that
      advanced SSH features need.
    • After quitting with SSH Integration sessions
      open, relaunching with window restoration on
      no longer types stray text, such as
      cmVzZXQy, into the restored tabs’ new shells.
      Likewise, when iTerm2 restarts after a crash
      and an SSH Integration session’s ssh has
      ended in the meantime, the restored session
      no longer types cmVjb3Zlcg== into its shell
      and then ignores input.
    • A file fetched over SSH Integration with
      Shell > ssh > Download Files… no longer stays
      listed as downloading in the Downloads menu
      after it finishes. Clear All in the Downloads
      menu now removes finished SSH Integration
      downloads, and their notification no longer
      says “Upload finished”.
    • With the Browser Plugin installed, “Download
      using SSH Integration” in the context menu no
      longer does nothing when the file can’t be
      found on the remote host. It now shows a
      failed download that says why.
    • When you connect with it2ssh user@host or an
      ssh:// URL, SSH Integration now records the
      user and host separately. Before, it treated
      all of “user@host” as the host name, which
      showed up in the file panel and the Downloads
      menu.
    • Running tmux -CC in a session that is already
      part of tmux integration, for example over
      ssh, now explains that tmux integration can’t
      be nested instead of silently doing nothing.
    • it2ssh no longer leaves the terminal waiting
      for Return when ssh fails before connecting,
      such as for a host name that doesn’t resolve.
      it2ssh now exits with ssh’s exit status.
    • it2ssh no longer hangs when the host or
      command contains non-ASCII text, such as
      accented letters or emoji. If iTerm2 can’t
      read the arguments, it now ends the
      connection and explains why instead of
      leaving the tab stuck.
    • When SSH Integration loads shell integration
      into a remote bash, the shell is now a login
      shell, so aliases and functions defined in
      ~/.profile or ~/.bash_profile are available.
    • The notification for a failed download or
      upload now names the file and gives the
      reason, instead of showing only an error such
      as “File not found”. Canceling a transfer no
      longer reports it as failed. An SSH
      Integration transfer that fails because of
      file or folder permissions now says so.
    • Downloading a folder over SSH Integration now
      tells you when files in it couldn’t be read
      and were left out, instead of reporting
      success with no mention of the missing files.
    • An SSH Integration download that fails or is
      stopped no longer leaves an empty or partial
      hidden file in your Downloads folder. Stop
      now takes effect right away even when the
      connection has stalled.
    • An SSH Integration download that can’t be
      saved into your Downloads folder when it
      finishes now reports that it failed, instead
      of saying the download finished. One that
      can’t be marked as downloaded from the
      internet is deleted and reported as failed,
      instead of staying listed as downloading.
    • it2 session list and other it2 commands that
      print names, paths or profile values no longer
      show JSON escapes, such as /dev/ttys001 for a
      tty.
    • On a FreeBSD or OpenBSD host reached through
      SSH Integration, sessions and the Jobs tool
      showed an environment variable such as
      VENDOR=unknown instead of the running program.
    • it2ssh now runs a command given after the host
      exactly as ssh does. Quotes in the command were
      lost, and newlines, tabs and non-ASCII text
      were mangled, so a command like
      it2ssh host "grep 'a b' file" ran the wrong
      thing.
    • A custom command or SSH profile command that
      contains a backslash or a double quote now
      runs as written. Such commands used to reach
      the shell broken when they ran in a login
      shell, which SSH profiles always do.
    • A tmux Integration pane whose server was not
      yet known to be local when the pane opened
      never learned which program it was running.
    • Programs that turn on the Kitty keyboard
      protocol and then request xterm’s
      modifyOtherKeys, as Claude Code does, keep
      the Kitty protocol, matching kitty. Before,
      the request turned it off, so Command keys
      stopped being reported.
    • With the Minimal or Compact theme and no tab
      bar at the top, the window buttons that appear
      when you point at the window’s top-left corner
      no longer cover a web browser’s back, forward,
      and reload buttons, which made them impossible
      to click. As with a status bar there, a small
      arrow appears in the corner instead; click it
      to show or hide the window buttons.
    • Fixed hotkey windows with the Centered or
      “Centered, No Title Bar” style returning to
      their original size each time they were shown
      after you resized them.
    • Fixed several Python API bugs. Subscribing to
      profile change notifications always failed,
      Color.hex failed for colors read from a
      profile, and items in nested submenus of
      MainMenu could not be reached on Python 3.12
      and earlier.
    • Fixed Selection.async_get_string in the Python
      API adding line breaks that copying the same
      selection in iTerm2 leaves out.
    • A program that sets the window or tab title
      over and over no longer makes iTerm2 fall far
      behind, run at full CPU for minutes, and grow
      to gigabytes of memory.
    • In an alert with a text field, such as the
      one asking how many spaces to use when you
      paste text with tabs, Cmd-A, Cmd-C, Cmd-V,
      Cmd-X, and Cmd-Z now edit the text instead of
      pressing a button. Also, two buttons in an
      alert no longer share the same Cmd-key
      shortcut.
    • Fixed a memory leak where each AI request,
      such as each AI chat message, left memory in
      use until iTerm2 quit.
    • Opening a file or link in a split pane while
      a tmux integration tab is current now opens
      it in a new tab. Before, it could take over
      the tmux pane’s place, vanish without
      running, or open a tmux shell pane without
      the link.
    • The SetWindowFrame escape sequence no longer
      shrinks a window to nothing or moves it far
      off screen when given bad values. Malformed
      values are ignored, and the window now stays
      between its minimum size and the size of your
      displays, with part of it on a display.
    • If a Python script that loads a URL in a
      browser session gave up waiting while you
      read the permission prompt, approving it
      afterward no longer loads the URL.
    • An AI chat set to Llama (Local) no longer
      sends its messages to your cloud AI provider
      when no Ollama model is available, for example
      because Ollama isn’t running. It now shows an
      error asking you to start Ollama. Naming the
      chat and drawing its icon now also use the
      chat’s own model instead of the default one.
    • Copying part of a line that mixes
      left-to-right and right-to-left text no
      longer drops the space between a
      left-to-right word and the right-to-left
      text after it, which fused the two words.
    • The file iTerm2 keeps next to its saved
      window state (restorable-state.sqlite-wal)
      no longer stays as large as the saved state
      itself. With long scrollback it could use a
      lot of disk.
    • When settings load from a custom folder,
      quitting no longer asks to copy settings to
      the folder every time just because iTerm2
      updated an older setting saved there.
    • Pressing Cmd-Y (Edit > Engage Artificial
      Intelligence) in the Cockpit’s composer no
      longer crashes iTerm2. The menu item is now
      disabled there.
    • With SSH integration, starting the remote
      shell, completing paths, and other requests
      with several long arguments no longer
      occasionally fail because the request was
      split in two on the way to the remote host.
    • In the minimal theme, a browser tab’s tint now
      matches the page you just loaded. Before, it
      showed the previous page’s background color
      until the next page loaded.
    • In the Cockpit’s composer, an @ followed by a
      space no longer keeps the session picker open,
      so Return inserts a newline instead of turning
      the @ into a session chip. After Esc closes the
      picker, it stays closed while you keep typing.
    • Sending from the Cockpit after closing the tab
      of one of its chosen sessions now sends to the
      sessions that remain, names the closed one,
      and removes its chip, instead of sending
      nothing and showing an internal identifier.
    • The Cockpit no longer covers alerts attached
      to a terminal window, such as the Broadcast
      Input confirmation, hiding their buttons.
    • The Cockpit composer’s placeholder text is no
      longer drawn twice when the panel is too
      narrow to fit it on one line.
    • In the Cockpit’s composer, Advanced Paste and
      Open Command History, which did nothing there,
      are now disabled, and its help no longer lists
      them or AI lookup.
    • Clicking the icon of the Current Directory,
      Hostname, or Username status bar component
      opens its menu again, as clicking its text
      does.
    • The folder icon in the Current Directory
      status bar component can no longer be dragged
      after its directory has been deleted.
    • With debug logging on, a password typed into
      a password field (for example, in the password
      manager) no longer appears in the debug log.
    • Fixed saving a window arrangement with “Save
      to File with Contents…” and archiving a
      session when the text contained hyperlinks,
      underline colors, similar styling, or
      right-to-left text. The arrangement file was
      never written, and the session archive was
      empty. If either kind of save fails, iTerm2
      now reports an error. Issue 13143.
    • Fixed a hang that could freeze iTerm2 with a
      beachball when GPU rendering was on and the
      system was under heavy load, for example from
      memory pressure. Issue 13139.
    • In the Claude Code Integration setup, clicking
      Show on the Show Toolbelt step more than once
      no longer darkens the window further with each
      click.
    • In tmux integration, showing timestamps beside
      the text in one pane of a window split into
      top and bottom panes no longer covers the end
      of that pane’s lines and leaves an empty strip
      at the right edge of the window.
    • With the Minimal or Compact theme and the
      Snippets tool enabled in the toolbelt, a window
      could be made wider but not narrower. Issue
    • When an app enables the Kitty keyboard
      protocol and “Use the Caps Lock key to switch
      to and from the last used Latin input source”
      is on, tapping Caps Lock to switch input
      sources no longer sends a malformed key report
      that some apps read as Control-C. Holding it to
      turn Caps Lock on or off now reports a Caps
      Lock press and release. Issue 13136.
    • The it2dl utility now works on systems where
      bash is not in /bin, such as Raspberry Pi OS.
    • With ligatures turned off, some fonts could
      still draw “fi” as a ligature and leave a gap
      after it, as in “confi g”. Issue 13133.
    • Turning off “Show activity indicator” in
      Settings > Appearance > Tabs now also hides
      the tab’s spinner when a program reports
      progress. Issue 13145.
    • Installing Shell Integration with “Download
      and Run Installer” installed outdated
      scripts, so the warning that this account’s
      Shell Integration scripts are out of date
      kept coming back. Issue 13155.
    • Fixed Shell Integration for xonsh, which was
      installed but never took effect. Installing
      it again fixes an existing installation.
    • Unpinning a pinned tab that was not the
      rightmost pinned tab, or one in a tab group, no
      longer breaks the tab bar (missing tabs, missing
      group headers, highlight on the wrong tab).
      Issue 13154.
    • Choosing the Make Hyperlink trigger action
      with interpolated string parameters turned on
      now fills in a working URL,
      https://(matches[0]). It previously filled in
      https://(match0), which refers to a variable
      that doesn’t exist.
    • Fixed a bug where a trigger whose interpolated
      parameter refers to its match, as in
      (matches[0]), could make output stall, and
      with tmux integration could freeze every tmux
      window. Triggers that use only matches[N] and
      line no longer wait on the session.
    • Fixed Kitty graphics images cropped to part of
      their height showing the wrong part of the
      image when GPU rendering is on. Multi-row
      images forwarded by some terminal multiplexers
      appeared with their rows in reverse order.
      Issue 13146.
    • Pressing an arrow key or Tab while composing
      text with an input method now finishes the
      character and performs the key in one press,
      as Return already did.
    • Opening a web browser session in iTerm2 Buddy
      now shows the web page instead of a black
      screen.
    • iTerm2 Buddy no longer connects slowly or
      keeps saying your Mac is busy while the Mac’s
      displays are asleep.
    • An AI chat started from a web browser session
      in iTerm2 Buddy is now linked to it as a web
      browser, not a terminal.
    • When AI chat asks to run a tool that can’t run
      in the linked session, the chat now reports
      the error and continues instead of waiting
      forever.
    • Window > Lock Location and the tab menu’s
      Rename Tab… item and “Tab Color:” label are
      now translated instead of always appearing in
      English.
    • The “AI-generated name” choice in Settings >
      Profiles > General > Title is now translated.
    • it2 session list no longer shows a session’s
      tty as /dev/ttys000 or its name with
      backslash escapes. It prints the plain values.
    • it2 session set-var now sets a plain value
      such as hello. Before, it reported success
      but set nothing unless the value was quoted
      JSON.
    • After window restoration, a tab whose session
      had a status (for example, one set with OSC
      1. shows it again in the tab bar, not
        only in the Session Status tool.
    • A trigger written by hand in a Dynamic Profile
      no longer forgets its state when the profile
      reloads, so an Instant trigger no longer fires
      a second time on the same line.
    • Uninstalling the Claude Code integration no
      longer says an empty settings.json couldn’t be
      parsed.
    • Installing the Claude Code integration when
      ~/.claude/settings.json is a broken symlink no
      longer leaves the new settings.json marked
      executable.
    • The Internet-Free shell integration install no
      longer hangs when the shell you’re using isn’t
      your login shell (for example, tcsh started
      from zsh). It installs for the shell you’re
      using.
    • An AI chat using a local Ollama model no
      longer sends its messages to your cloud AI
      provider after that model is removed from
      Ollama. It now shows an error, and you can
      pick another local model for the chat.
    • An alert shown again by “Permanently Forget
      Saved Selection” no longer presses a button
      when you type a plain letter. Its shortcuts
      need Cmd, as they did the first time.
    • Cmd-H, Cmd-Q, Cmd-W, and Cmd-M no longer press
      a button in an alert whose button happens to
      start with that letter, such as Help.
    • After you change a window’s style in Window >
      Window Style, for example to No Title Bar, the
      window keeps keyboard focus, so you can keep
      typing without clicking it first.
    • After Swap With Session between a tab with
      one pane and a split tab, each pane now shows
      or hides its title bar to match its new tab.
    • When tmux windows open as tabs in the
      attaching window, attaching from a hotkey
      window no longer moves the hotkey window to
      where tmux last had a window, often mostly off
      screen.
    • A profile setting chosen from a pop-up menu,
      such as the progress bar color scheme, now
      shows its default instead of a blank menu when
      the profile holds a value the menu lacks.
    • “Prefer integrated to discrete GPU” in
      Advanced GPU Settings is now disabled on a Mac
      with only one GPU, where it has no effect.
    • When pasting text with tabs, the prompt that
      offers to convert them to spaces now puts the
      cursor in its number-of-spaces field, so you
      can type a tab width without clicking first.
    • Shell > Close (⌘W) now closes the Cockpit when
      it is the key window. Before, the menu item
      was disabled there.
    • Advanced Paste now counts lines correctly.
      Before, text whose newlines were converted to
      carriage returns was reported as one line, and
      a trailing newline was counted as an extra
      line.
    • After you back out of the password manager
      from a website’s sign-in prompt in a browser
      session, “Remember this password” is no
      longer ticked unless you ticked it.
    • Session.async_move_to_new_tab() and
      async_move_to_new_window() in the Python API
      now return None for a tmux session instead of
      raising a JSON decoding error.
    • Calling Tab.async_update_layout() from the
      Python API without changing any sizes no
      longer shrinks the tab’s panes and window by
      a cell each time.
    • The banner shown when several nested SSH
      integration sessions end at once no longer
      ends with two periods.
    • The warning shown before opening an untrusted
      arrangement no longer counts a session’s
      command twice.
    • Typing quickly after a “Press any key to
      dismiss” message, such as the one shown when a
      program tries to clear scrollback, no longer
      loses the keys typed while the message slides
      away. Only the first key dismisses it.
    • With the Minimal theme, the git branch item in
      a workgroup’s toolbar draws its ahead and
      behind arrows in the toolbar’s text color
      instead of black on a dark terminal
      background.
    • In Low Power Mode, status bar graphs such as
      CPU Utilization move once a second instead of
      animating continuously.
    • After a screen lock ends password manager
      authentication, the trigger editor’s “Open
      Password Manager…” action no longer lists
      saved account names until you authenticate
      again.
    • Turning on generative AI while Companion
      Device Settings shows a failed pairing no
      longer erases the error and the QR code.
    • With Focus Follows Mouse, returning the
      pointer to a pane whose find field had focus
      no longer selects the whole query, so the next
      key you type doesn’t replace it.
    • With Focus Follows Mouse and “…even to views
      like Search or Composer” on, the status bar’s
      search field now takes focus when the pointer
      moves over it, like the find bar does.
    • The donation link in the Settings and Edit
      Session title bars no longer truncates the
      window title.
    • In the Add/Edit Manual AI Model sheet, the
      API key menu is no longer too narrow to show
      “Automatic (none for a local endpoint)”.
    • In Settings > Keys > Hotkey, the “App
      Hotkey:” and “Open Quickly Hotkey:” labels no
      longer run under the controls beside them.
    • The AI chat’s find bar no longer squeezes its
      search field to nothing in the inline chat or
      a narrow chat window. When space is short it
      hides the search mode menu and the match count
      instead.
    • Closing the AI chat’s find bar with Escape now
      returns focus to the message field, so what you
      type next is no longer lost.
    • Test Connection in the AI model editor can now
      be stopped while it runs. Before, a test of an
      unreachable server could take many minutes.
    • AI network errors now read “HTTP request
      failed: …” instead of a broken sentence, and
      errors from a self-hosted model name its
      server instead of “Unknown Platform”.
    • Test Connection in the AI model editor now
      rejects custom headers that are not valid, as
      Save does, instead of leaving them out and
      reporting success.
    • The AI Usage toolbar item no longer shows
      “Unreadable usage data” when Claude Code’s
      output contains color codes or other control
      characters.
    • Changing an AI chat permission from the info
      menu now updates the permission buttons shown
      in the chat right away.
    • In an orchestration chat, the notice shown
      when mentioning a session now shows names with
      underscores correctly.
    • AI command suggestions no longer repeat a
      directory you already typed in the filename
      they insert (for example, “rm logs/logs/
      error.log”).
    • AI models on Azure OpenAI in Azure Government
      (.azure.us) and Azure China (.azure.cn) now
      send their API key the way Azure expects.
    • Look Up (Ctrl-Cmd-D) on a right-to-left line
      now highlights the word where it is drawn and
      shows its definition next to it, instead of
      over blank cells at the far side of the line.
    • With the GPU renderer off, underlines and
      strikethroughs on right-to-left text are now
      drawn under the text they belong to instead
      of a few cells to the right.
    • With the GPU renderer off, Devanagari and
      other scripts with vowel signs written before
      their consonant draw the sign in the right
      place again: क्षत्रिय no longer shows ि after त्र.
    • In Copy Mode, the cursor on a right-to-left
      line is now drawn on the character it is on,
      instead of in the blank area on the other side
      of the line.
    • A scroll region set by a program that is
      still running when iTerm2 quits unexpectedly
      is kept when the session is restored, so the
      program’s output no longer scrolls the whole
      screen.
    • Undo Close of a maximized floating pane now
      brings it back maximized, and unmaximizing it
      returns it to where it was before.
    • Docking a floating pane by dragging it onto a
      pane with Control held now keeps keyboard focus
      in the docked pane when other floating panes
      are open.
    • In Swap With Session, pointing at a floating
      pane no longer also highlights the pane under
      it as a swap target.
    • In tmux integration, resizing a floating pane
      with View > Restore Text and Session Size or
      the Python API now resizes it in tmux too. It
      used to leave the pane blank or out of sync
      with tmux.
    • Window > Arrangements > Change Profile in
      Arrangement now works for a floating pane
      restored from a saved arrangement.
    • Hidden floating panes no longer count toward
      the number of panes that turns off the GPU
      renderer in a tab.
    • In tmux integration, a floating pane over pane
      %0 is no longer drawn over a different pane
      while Find > Filter is open.
    • A pane in a Workgroup can no longer be turned
      into a floating pane by dragging it onto a
      floating pane in another tab.
    • In tmux integration, the ReportCellSize,
      ReportWindowFrame, and ReportScreenFrames
      escape sequences now get a reply.
    • With AI command suggestions on, a filename
      row in the composer’s suggestion list no
      longer shows extra backslashes before
      spaces and other special characters.
    • With Archive On Closure on, closing a pane in
      a tmux integration window no longer saves an
      archive of it that could not be restored.
    • Dragging the folder icon in the Current
      Directory status bar component when its
      directory can’t be dragged (for example, on a
      remote host) no longer opens the component’s
      menu when you release the mouse.
    • When a session is restored with the “Session
      Contents Restored” banner, the shell’s output
      now starts right below the banner instead of
      after a blank row when the cursor had been in
      the middle of a line.
    • Resizing panes with Tab.async_update_layout()
      in the Python API now gives each pane the size
      you asked for. A pane used to come up a column
      or row short and the window shrank a little
      each time.
    • With the GPU renderer off, selecting part of
      an Arabic or Persian word, or a find match
      inside one, no longer breaks the letters’
      joining at the edge of the highlight.
    • it2 app get-focus, it2 profile list and it2
      profile show no longer print names, fonts and
      badge text with backslash escapes, such as a
      profile named a/b shown as a/b.
    • Kitty graphics placeholder cells that show a
      cropped part of an image now draw that part.
      Before, a crop could draw nothing, or a strip
      of the neighboring part of the image could
      appear at its edge.
    • An SSH Integration session restored after
      relaunching iTerm2 no longer hangs when its
      connection drops while the remote command is
      printing output. It returns to the local
      shell.
    • In AI Chat, a session mention in the message
      field now changes size along with the text
      when you change the font size from the Font
      menu or Font panel.
    • In the AI Chats window, when sending a message
      moves a chat to the top of the list, the
      highlight now moves with it instead of
      staying on a different chat.
    • An AI chat using a model you added in
      Settings > General > AI (for example, one on
      a local server) no longer sends its messages
      to OpenAI after you remove or rename that
      model. It now shows an error.
    • VoiceOver now reads the Profiles window’s
      New Floating Pane button as “New Floating
      Pane” instead of the name of its icon.
    • The browser’s page-load error page is now
      fully translated (its “Try Again” button and
      footer were in English), as is the page shown
      for an ssh: link with no ssh integration
      connection.
    • A web address containing a quote or other
      special characters can no longer inject script
      or markup into the browser’s page-load error
      page.
    • When several Dynamic Profiles files have
      errors, the alert now gives the right number
      of additional errors in the log. It counted
      each bad file twice.
    • With Focus Follows Mouse on, if you move the
      pointer into another split pane while a sheet
      such as Edit Tab Title is open, that pane now
      gets focus when the sheet closes. Before, it
      stayed with the original pane until the
      pointer left and came back.
    • AI custom headers you remove from a model no
      longer come back after launching iTerm2 on
      another Mac that shares your settings.
    • Changing your AI models in Settings when you
      used a single custom AI model no longer drops
      the custom headers you set up for it.
    • The AI Usage toolbar item’s problem report
      no longer fills the screen with the output of
      a usage command that printed too much, which
      left its buttons out of reach.
    • Searching in the AI Chats window no longer
      crashes iTerm2 when the search finds a match.
    • The setting and menu item pickers in the key
      binding editor now say “Select Setting…” or
      “Select Menu Item…” until you choose one.
      Before, they were blank.
    • Advanced Paste’s chunk size and delay
      values and the sizes in Paste History now use
      units in your language instead of English.
    • In some languages, the shell integration
      installer no longer cuts off the option to
      install the iTerm2 Utilities or its
      description.
    • The browser’s View Source command now shows
      the page’s source. Before, it always said
      “No source available.”
    • When you change the theme, an open browser
      tab now switches pages that have light and
      dark versions to the matching one instead of
      keeping the old look until you open a new tab.
    • In some languages, the shell integration
      installer no longer cuts off the titles of
      its install choice buttons or its Skip,
      Cancel, and Continue buttons.
    • In Russian, the shell integration installer
      no longer cuts off its Preview Command
      button.
    • Right-clicking in a browser tab that a page
      opened from a link now shows the context
      menu.
    • In a browser tab that a page opened from a
      link, find, copy on select, hovered links,
      autofill, the password manager, and named
      marks now work on that tab instead of the
      tab that opened it.
    • In AI chat, if you send a new message instead
      of answering a request to run a command, the
      AI is no longer told that iTerm2 restarted and
      invited to run the command again.
    • With the kitty keyboard protocol reporting
      all keys, a dead key followed by a key it does
      not combine with now reports the dead key and
      then the second key, instead of the second key
      twice.
    • In the Minimal theme, a window opened while
      iTerm2 is running now shows the profile’s
      subtitle in its title bar instead of only
      after the window is resized.
    • When settings load from a custom folder and
      are saved manually, the red “!” in the
      Settings title bar now goes away after you
      click Save Now.
    • Importing a script archive whose signing
      certificate is damaged now shows an error
      instead of crashing iTerm2.
    • Undo Close of a floating pane now puts it
      back at its old place among the other floating
      panes, so a maximized one no longer comes back
      in front of and hiding the others.
    • Help > GPU Renderer Availability now explains
      why GPU rendering is off in a complete
      sentence.
    • Cmd-hover and Cmd-click now find URLs on
      right-to-left lines that run up to a pane
      divider, such as in a tmux split without tmux
      integration.
    • Cmd-hover now underlines a URL that ends in
      right-to-left text wherever the pointer is on
      it, instead of leaving the previous URL
      underlined.
    • Command Info no longer shows a negative
      running time such as “0:-1.999” for a command
      that finishes quickly.
    • The context menu of a tab group’s label now
      matches the window’s light or dark appearance,
      like a tab’s context menu, when it differs
      from the system’s.
    • With HTML tab titles on, “&” and “<”
      in a title are now shown as “&” and “<” even
      when the title has no bold, italic, or
      underline tags.
    • In Settings > Pointer, “…even to views like
      Search or Composer” is now dimmed when Focus
      Follows Mouse is off from the moment the pane
      opens, not only after toggling Focus Follows
      Mouse.
    • With the Settings window in front of a
      terminal window, Edit > Find > Find… now
      focuses the Settings search field instead of
      opening the find bar in the terminal behind it.
    • Command Info’s Output size no longer counts
      the next prompt or the command typed at it,
      and is no longer too large for a command that
      has scrolled into history.
    • Command Info’s Output size no longer counts
      the “%” marker and padding zsh adds after
      output that doesn’t end in a newline.
    • After Session.async_split_pane() in the Python
      API, calling Tab.async_update_layout() without
      changing any sizes no longer grows the
      original pane back to its old width.
    • In AI Chat with streaming responses on, a
      code block at the end of a reply now shows as
      code with a copy button instead of as large
      text or with a stray closing ```.
    • In AI Chat, a mention of a web browser session
      now shows a globe icon instead of a terminal
      icon, both in the message field and in sent
      messages.
    • The Internet-Free shell integration install
      no longer sometimes hangs while installing
      the utilities, waiting at a “> ” prompt.
    • The Internet-Free shell integration install
      for bash could finish without adding the line
      that loads shell integration to your
      .profile or .bash_profile.
    • The Internet-Free shell integration install
      no longer reports that it installed the
      utilities when they failed to unpack, no
      longer garbles them on a busy computer, and
      no longer types them into the shell as
      commands when the ~/.iterm2 folder is not
      writable.
    • Canceling the Internet-Free shell integration
      install while it sends the utilities now
      stops sending them right away instead of a
      minute or more later. Canceling a step or
      clicking Send Again now returns you to your
      own shell instead of leaving you inside the
      installer’s helper shells at a “>> ” prompt,
      even when your shell is slow to start them.
      If you are still in one when you try again,
      the installer says so instead of reporting
      that you use bash.
    • An scp download that asks for a password no
      longer hangs if you open the Password Manager
      and close it without choosing a password.
    • An upload over SSH Integration no longer
      overwrites a remote file of the same name when
      iTerm2 could not check whether one exists, for
      example because of a permission error or a
      connection problem. The upload now fails with
      an error instead.
    • When an administrator turns off generative AI,
      iTerm2 no longer uses Apple Intelligence for
      AI chat, AI tab titles, or the command safety
      check.
    • The Internet-Free shell integration install
      no longer unpacks the utilities into the
      current folder when it can’t open the
      ~/.iterm2 folder, as when a file has that
      name. It says they were not installed.
    • Search the Web for Selection now finds text
      that contains a plus sign. Before, “c++” was
      searched for as “c” followed by spaces.
    • The “Learn more.” links on the first page of
      the shell integration installer now use the
      same font as the text around them.
    • With AI command suggestions off, the gray
      completion the composer shows for a file name
      with a space or other special character is
      now escaped, so accepting it gives a working
      command.
    • The browser’s View Source now highlights
      attribute values.
    • With SSH Integration, the Composer now
      suggests remote file names when the remote
      host has Python 3.7 or 3.8.
    • With SSH Integration, a remote request that
      fails unexpectedly, such as a file operation,
      now reports an error instead of never
      finishing.
    • With SSH Integration, asking for an immediate
      update of the remote job list, as the Job
      status bar component can, no longer ends the
      integration for that session.
    • With SSH Integration to a Mac, output that a
      remote command printed just before it exited
      could be lost.
    • With SSH Integration, ending a connection
      while a remote file search was running could
      leave iTerm2’s helper program running on the
      remote host.
    • With SSH Integration, deleting a remote
      symbolic link to a folder now deletes the link
      instead of failing.
    • With SSH Integration, iTerm2 now reads the
      remote PATH correctly when it contains runs of
      spaces or wildcard characters, and when the
      remote login shell is one iTerm2 doesn’t
      recognize.
    • With SSH Integration, remote files and folders
      whose names contain non-ASCII characters, such
      as accented letters, can now be downloaded,
      deleted, renamed, and otherwise changed.
      Before, they were reported as missing.
    • With SSH Integration, restoring a session that
      had used ssh to reach a further host now works
      when that ssh command has non-ASCII characters.
    • With SSH Integration, non-ASCII text that
      iTerm2 reads from the remote host, such as a
      remote PATH containing accented letters, is no
      longer garbled.
    • With SSH Integration, after iTerm2 restarts
      or recovers a connection, it no longer waits
      for the remote host to print something before
      remote features start working again.
    • Answering Always to “Close tmux windows after
      detaching?” no longer closes sessions that did
      not ask, such as the tmux session itself.
    • Announcements in narrow panes are legible: when
      there is no room beside the buttons, the
      buttons go on a row below the text.
    • Shell > ssh > Download Files… now lets you
      choose any file. Before, it only allowed file
      types that the AI provider accepts as
      attachments.
    • Installing the iTerm2 utility scripts on Linux
      no longer prints tar warnings or leaves ._
      files in ~/.iterm2.
    • When a session’s program ends and iTerm2 offers
      to restart it, short output such as a custom
      command’s is no longer hidden behind the offer.
    • The Downloads and Uploads menus now show
      their translated title in the menu bar, and
      the size of each file (such as “1.2 MB of
      20 MB”) is now translated.
    • Answering No to “Allow Terminal-Initiated
      Download?” (for example, for it2dl) no longer
      fills the terminal with the file’s encoded
      contents. The same goes for declining to
      display a file inline.
    • iTerm2 no longer crashes or stops drawing
      terminal contents if a display reports a
      refresh rate of 0.
    • Fixed a hang of about a second each time
      Dynamic Profiles were reloaded when there were
      hundreds of them. Issue 13174.
    • Choosing Paste as Text for a pasted or dropped
      file and then answering the paste confirmation
      no longer freezes the window.
    • Some apps that ask to be told about mouse
      movement, such as those built with Lanterna,
      received clicks but not movement. Issue 13184.
    Original source
  • All of your release notes in one feed

    Join Releasebot and get updates from Warp and hundreds of other software products.

    Create account
  • Oct 27, 2026
    • Date parsed from source:
      Oct 27, 2026
    • First seen by Releasebot:
      Nov 2, 2026
    Ghostty logo

    Ghostty

    Ghostty 1.4.0

    Ghostty releases a major update with faster performance, lower memory use, complete Kitty graphics support, and improved SSH integration. The release also adds macOS and Linux rendering improvements, sharpens terminal compatibility, and fixes security issues across platforms.

    Release notes for Ghostty 1.4.0, released on October 27, 2026.

    Ghostty 1.4.0 is a major release that includes large performance and memory improvements, a 100% complete Kitty graphics implementation including animation and relative placements (the first non-Kitty terminal to do so), SSH integration improvements, and hundreds more improvements and fixes across all platforms.

    This release features 7 months of work with changes from 172 contributors over 2,889 commits. Thank you to all the contributors, maintainers, community moderators, translators, packagers, and users who each helped make this release possible.

    These release notes are painstakingly and lovingly hand-crafted by human Ghostty maintainers, including the full changelog. They take a combined 16+ hours to write, so please enjoy. 🥰

    Security

    • GHSA-4hwh-wx3w-3fqg. Paste protection didn't treat carriage returns as line endings, so a paste could run a command without confirmation in programs that don't use bracketed paste. This requires user interaction (copy-paste) to trigger.
    • GHSA-mhff-mv4q-fp63. Malicious Kitty graphics commands could crash or hang Ghostty, force huge allocations, or in limited cases read or delete files outside the allowed temporary directories. This only requires displaying malicious output.
    • GHSA-hcr9-7hcr-mjm8. Malicious terminal output could crash Ghostty, closing every window, via tmux control mode. tmux doesn't need to be installed. This affects Ghostty 1.3.0 and 1.3.1.
    • GHSA-hp9c-qp4q-cpw3. The same impact as above, via a tmux control mode layout with a zero-sized or oversized pane. This affects Ghostty 1.3.0 and 1.3.1.
    • GHSA-w9q4-5jvv-mcv4. Clearing the screen into scrollback could corrupt memory if it deleted the scrollback page holding a styled or hyperlinked cursor. This only requires displaying malicious output, but only with a small scrollback-limit such as 0. The default isn't known to be affected.
    • GHSA-2r63-vmw6-3m3c. A crafted directory name could make the zsh shell integration send arbitrary escape sequences, such as silently replacing the clipboard via OSC 52. bash was affected in a more limited way. This only requires cd-ing into a directory from untrusted content, such as a cloned repository.
    • macOS: GHSA-cw69-wm67-5pv8. Cmd-clicking a crafted OSC 8 hyperlink could open unsafe local files or custom URL schemes, leading to arbitrary command execution. Ghostty now blocks unsafe targets and confirms custom URL schemes. This requires user interaction (cmd-click) to trigger.
    • macOS: GHSA-mfw9-xcr3-7gfp. The same issue as above for links detected by the link configuration, including the default URL matcher. This requires user interaction (cmd-click) to trigger.
    • macOS: GHSA-v8cw-fg4j-jcc4. Drag-and-drop text skipped paste protection, with the same impact as above. This requires user interaction (drag-and-drop) to trigger.
    • macOS: GHSA-mxqx-236q-wrv7. Opening a file whose name contains control characters could run a different command than the one shown in the confirmation dialog. This requires a crafted file on your system and confirming the dialog.

    Note: I requested CVEs for the above advisories weeks ago, but GitHub hasn't assigned them yet. If/when they're assigned, I will update the above with proper CVE numbers.

    Highlights

    macOS 27 Support

    Ghostty 1.4 supports macOS 27 (Golden Gate). Most of the work was compatibility fixes:

    • Tabs in the titlebar (macos-titlebar-style = tabs) lay out correctly again.
    • The native tab bar no longer draws as a solid gray bar on top of your theme. It now lets the new glass style blend with your terminal background.
    • macos-titlebar-style = hidden no longer covers the top lines of the terminal when Reduce Transparency is on.
    • The app icon no longer has a thin border.
    • The Shortcuts "New Window" action no longer opens two windows when Ghostty is running without any windows.

    Ghostty 1.4 remains fully compatible with prior macOS versions back to and including macOS 13 (Ventura). See the system requirements for more details.

    Note

    Ghostty 1.3.1 works on macOS 27, but it has some of the visual issues listed above, such as the gray tab bar.

    Kitty Graphics Animation and Relative Placements

    Ghostty now supports Kitty graphics animation and relative placements. These were the last major features of the Kitty graphics protocol that Ghostty didn't support.

    Programs that display animated images with the Kitty protocol, such as an animated GIF shown with kitten icat, now animate in Ghostty instead of showing a single still frame. Frame transmission, composition, and playback control are all supported, and animations pause while the terminal isn't visible. Relative placements let a program position one image relative to another image's placement, so the child image moves along with its parent.

    We also did a full conformance pass against the specification and Kitty itself, fixing dozens of behavioral differences. For example, images now scroll with text inside scroll regions, retransmitting an image ID replaces the old image, and invalid image data now gets an error response instead of silence, which could leave clients hanging. The full list is in the terminal capabilities section.

    Kitty graphics are faster, too. Image payloads are now parsed in bulk with SIMD instead of one byte at a time, making large image transfers about 16x faster to parse in our benchmarks (64 MiB of image data, x86_64 Linux), and drawing images costs much less per frame.

    Our Kitty graphics implementation now covers 100% of the published specification, making Ghostty (and libghostty) the first terminal to do this outside of Kitty itself.

    Scrollback Compression and Lower Memory Usage

    Ghostty now transparently compresses scrollback that isn't visible, reducing the physical memory those pages use by 70% to 90% for typical text-heavy history. Compression only runs while the terminal is idle and pages are decompressed on demand when you scroll back or search, so it has no measurable impact on I/O throughput.

    Thanks to compression, the default scrollback limit has been raised from 10 MB to 50 MB per terminal. On platforms that support compression, a full scrollback still generally uses less physical memory than the old 10 MB limit did.

    Note

    Compression lowers resident (physical) memory, not virtual memory, so look at resident memory when measuring it. It is currently available on macOS and 64-bit Linux.

    Beyond scrollback, memory usage is lower in many places:

    • A new, empty terminal now uses about 16 KiB of terminal page memory on macOS, down from 128 KiB in Ghostty 1.3.1.
    • On macOS and Linux, memory freed by clearing or trimming scrollback is now returned to the OS instead of being held until the terminal closes.
    • Hidden tabs release their GPU resources. On macOS, with one visible tab and 20 hidden tabs, GPU memory dropped from about 385 MiB to 18 MiB. Rebuilding them when a tab becomes visible again takes under a millisecond.

    Performance Improvements

    There are performance improvements across the board in Ghostty 1.4 that yield significant gains compared to prior Ghostty versions.

    The biggest win came from a surprising discovery: on macOS, the kernel caps every read from a pty at about 1 KiB no matter how large the read buffer is. Previously, Ghostty processed each read as it arrived, so per-read overhead was paid every kilobyte, and the program writing output sat blocked while we parsed. Ghostty now drains the pty on one thread while parsing on another, raising end-to-end I/O throughput by 25% to 55% on macOS (M4 Max, plain and Unicode text) over Ghostty 1.3.x.

    VT processing itself is also much faster. In parser benchmarks, plain ASCII text went from 128 MB/s to 725 MB/s (5.7x), CJK text got 3.4x faster, and a 2.6 GB dataset of real-world terminal recordings from asciinema is processed about 25% faster. Together, these changes took cat-ing a 150 MB text file on macOS from 1.5 seconds to 566 milliseconds.

    Other notable improvements:

    • Resize: resizing a terminal with a large scrollback is about 6x faster (120x80 with 10,000 lines of scrollback), and 3x to 5x faster with history full of CJK text or emoji.
    • Rendering: the renderer holds the terminal lock 2.7x to 11x less per frame, leaving more time for the I/O thread during heavy output.
    • Copy and search: formatting terminal contents as plain text, HTML, or VT, which backs clipboard copy, write_screen_file, and scrollback search, is 1.5x to 8x faster.
    • Launch (macOS): about 15% faster from launch to visible window, and 27% faster to the first rendered frame.
    • Idle energy: on macOS, the renderer's display link now sleeps when there's nothing to draw. On GTK, hidden tabs stop rendering, matching macOS.
    • Large OSC sequences: OSC 52 clipboard payloads parse about 30x faster, and even short sequences like title changes are about 6x faster.

    New OpenGL Renderer (Linux, FreeBSD)

    The GTK app has a new rendering pipeline. It no longer uses GtkGLArea. Instead, the renderer draws with EGL on its own thread, exports each frame as a DMABUF, and hands it to GTK to display. Rendering is now triple-buffered, which should greatly reduce tearing, and no OpenGL calls run on the main thread anymore, which let us remove a number of workarounds.

    The most visible result is crisp text under fractional scaling. Text and box-drawing characters are no longer blurry with fractional display scaling such as 125% or 150%. We fixed this once before, but it came back after upstream GTK changes. Ghostty now renders at the window's true fractional scale, so every rendered pixel maps to exactly one pixel on screen.

    The new render surface needs a system EGL library. On GPU drivers that can't export DMABUFs, Ghostty falls back to copying frames through the CPU, which is slower but works.

    Kitty Clipboard Protocol

    Ghostty now implements the Kitty clipboard protocol (OSC 5522) on both macOS and GTK. Ghostty 1.3 could parse the protocol but didn't implement it.

    OSC 52 can only read and write plain text. The Kitty clipboard protocol lets programs running in the terminal read and write any kind of clipboard data, such as images or HTML, and lets them pick among the formats on the clipboard. Programs can also enable paste events (mode 5522), which tell the program what formats a paste contains so it can read the one it wants. This is how a terminal program can accept a pasted image, for example.

    Clipboard access follows the existing clipboard-read and clipboard-write configurations. By default, reads prompt for permission and writes are allowed. The permission prompt shows a preview of the clipboard contents, including images. Programs that send a password can have your answer remembered for the rest of that terminal session. A new clipboard-write-limit-bytes configuration limits the size of a single write (default 64 MiB). A write over the limit fails and leaves the clipboard untouched.

    Split Drag and Drop (GTK)

    You can now rearrange splits on GTK by dragging them, matching the macOS feature introduced in Ghostty 1.3. When a tab has two or more splits, each split shows a drag handle at the top. Grab the handle and drop the split onto any other split, including splits in other tabs and windows. An overlay shows which side of the target split it will land on. The terminal contents, working directory, and running processes all move with it.

    A new drag-handle configuration controls when drag handles are shown on both macOS and GTK: auto (default), always, or never. With never, splits can't be rearranged with the mouse. Hiding the handles was a common request from users who found them in the way.

    On GTK, splits can only be dropped onto other splits. Dragging a split out to create a new tab or window is macOS-only.

    Terminal Emulation Accuracy

    Ghostty 1.4 includes dozens of improvements to core terminal emulation. We now run esctest, Thomas Dickey's terminal conformance suite, against Ghostty's terminal core in CI. Alongside that, we fixed many differences from xterm in cursor movement within margins, tab stops, character sets, mode reports, and more. You can find the full list of related changes in the terminal capabilities section.

    Ghostty also supports several new sequences, including soft terminal reset (DECSTR), extended cursor position reports (DECXCPR), backarrow key mode (DECBKM), and screen size reports in characters (CSI 19 t). Programs can also now ask whether the terminal is visible using visibility reports (mode 2033), so they can stop rendering while hidden.

    Keyboard encoding also matches xterm more closely, with fixes for modifyOtherKeys mode 2 and legacy Alt-as-Escape encoding of non-ASCII keys.

    Two new sequences are disabled by default because they can be abused by untrusted programs, including ones running on a remote machine:

    Allow programs to resize the window (CSI 8 t)

    vt-window-resize-allowed = true

    Allow programs to request screen checksums (DECRQCRA)

    vt-xt-checksum-report = true

    SSH Integration with ghostty +ssh

    Ghostty 1.2 introduced SSH shell integration features as a work in progress. In Ghostty 1.4, they're backed by a new ghostty +ssh CLI action: a drop-in ssh wrapper that prepares the remote session for Ghostty and then runs the real ssh with your arguments forwarded unchanged.

    ghostty +ssh [email protected]

    Or alias it so every ssh invocation goes through it

    alias ssh='ghostty +ssh --'

    Before connecting, +ssh installs Ghostty's terminfo on the remote host so the proper xterm-ghostty TERM value can be used, and forwards COLORTERM, TERM_PROGRAM, and TERM_PROGRAM_VERSION. If the terminfo install fails (for example, tic isn't available on the remote), it falls back to TERM=xterm-256color. Flags such as --terminfo=false, --forward-env=false, and --verbose control each step.

    The ssh-env and ssh-terminfo shell integration features (still opt-in) now call +ssh too. Previously, each shell integration carried its own copy of this logic, which made up roughly a third of our shell integration scripts. Now bash, zsh, fish, elvish, and Nushell all behave identically, and you can get the same behavior from scripts or anywhere else by calling ghostty +ssh directly.

    The terminfo install itself is also more reliable. Ghostty now always installs its own bundled terminfo rather than accepting whatever xterm-ghostty entry the remote already has, and it reinstalls automatically when a Ghostty update changes the terminfo. It also no longer needs infocmp or Ghostty's terminfo on the local machine. Installs are cached per host and port, so two machines behind one address no longer share a cache entry. And ssh-env no longer silently overrides SetEnv entries in your ~/.ssh/config.

    The +ssh-cache command that manages this cache now takes positional destinations (ghostty +ssh-cache [email protected]) and has a new --prune=30d flag. See the breaking changes if you script against +ssh-cache.

    System Requirements

    macOS: The minimum required macOS version for Ghostty 1.4 remains unchanged (macOS 13 Ventura). Ghostty is now compatible with macOS 27.

    GTK: Ghostty 1.4 requires GTK 4.18 and libadwaita 1.7, up from GTK 4.14 and libadwaita 1.5 in Ghostty 1.3. This aligns with our GTK/Adwaita version policy. Notably, Ubuntu 24.04 LTS doesn't meet this requirement. Systems with older GTK or Adwaita versions can work around this requirement by using an older version of Ghostty or the Flatpak package.

    OpenGL (GTK): The minimum required OpenGL version remains 4.3, but Ghostty now renders through EGL instead of GTK's OpenGL widget. This should be invisible for nearly everyone, but if Ghostty fails to start with an EGL error, please make sure your GPU driver provides a working EGL implementation.

    Important

    We previously announced that Ghostty 1.4 would require macOS 14. Nothing forced our hand to do this in this release, so we kept macOS 13 support. We still plan to drop macOS 13 in a future release. Apple dropped security support for macOS 13 in the fall of 2025, so we recommend upgrading regardless.

    Breaking Changes

    The following behaviors have changed in 1.4.0:

    • copy-on-select has been reworked and now accepts none, primary, clipboard, or both. The meaning of clipboard has changed: it previously copied to both the selection clipboard and the system clipboard, and now copies only to the system clipboard. If you set copy-on-select = clipboard and want the old behavior, change it to both.
    • macOS: copy-on-select now defaults to none (previously true), so selecting text no longer copies it anywhere and middle-click paste of the selection no longer works by default. To restore the 1.3 behavior, set copy-on-select = primary. Note that an explicit copy-on-select = true on macOS now copies selections to the system clipboard, which is different from 1.3.
    • macOS: cmd+arrow_up and cmd+arrow_down now run jump_to_prompt again, matching Terminal.app and Ghostty 1.2. In 1.3, these keys were hardcoded to scroll to the top and bottom and couldn't be rebound. To keep the 1.3 behavior, set keybind = cmd+arrow_up=scroll_to_top and keybind = cmd+arrow_down=scroll_to_bottom.
    • GTK: The default ctrl+shift+page_up and ctrl+shift+page_down keybinds now move the current tab left and right (move_tab), matching Firefox, GNOME Terminal, and VS Code. jump_to_prompt moved to ctrl+shift+arrow_up and ctrl+shift+arrow_down, so programs running in the terminal no longer receive those keys. If a program you use needs them, unbind them with keybind = ctrl+shift+arrow_up=unbind and keybind = ctrl+shift+arrow_down=unbind.

    Deprecations

    The list below contains deprecations that remain compatible today through a compatibility layer, but may break in a future release if they are ignored:

    • scrollback-limit has been renamed to scrollback-limit-bytes, to make room for the new scrollback-limit-lines.
    • copy-on-select = true is replaced with copy-on-select = primary on Linux and FreeBSD, or copy-on-select = clipboard on macOS. copy-on-select = false is replaced with copy-on-select = none.

    There is no set timeline to remove these deprecations, but we recommend adapting to the new configurations sooner rather than later to avoid any possible disruptions in the future.

    Full Changelog

    • Scrollback history is now transparently compressed while the terminal is idle, reducing the physical memory used by compressed scrollback by 70% to 90% for typical text. Compression is available on macOS and 64-bit Linux and can be disabled with the new scrollback-compression configuration. Because of this, the default scrollback limit has been raised from 10 MB to 50 MB, which on average still uses less memory than a full scrollback did previously.
    • A new configuration scrollback-limit-lines limits scrollback by number of lines instead of bytes. The existing scrollback-limit configuration has been renamed to scrollback-limit-bytes (the old name continues to work). If both are set, the first limit reached applies, and both accept unlimited.
    • copy-on-select now accepts none, primary, clipboard, and both and no longer affects middle-click paste (see middle-click-action). clipboard now copies only to the system clipboard, so use both for the previous behavior. The default on macOS is now none. See the breaking changes for migration details.
    • A new configuration middle-click-action configures the behavior of middle-clicking: primary-paste (default) pastes from the selection clipboard, clipboard-paste pastes from the system clipboard, and ignore does nothing.
    • A new binding action move_tab_to_new_window moves the current tab into a new window of its own. It is also available in the command palette.
    • A new CLI command +explain-config prints the documentation for a configuration option or binding action, e.g. ghostty +explain-config font-size.
    • The +explain-config and +show-config CLI commands now page their output through $GHOSTTY_PAGER or $PAGER (falling back to less) when run interactively. Paging can be disabled with --no-pager or by setting the pager to an empty value.
    • A new configuration drag-handle controls when the split drag handles are shown: auto (default), always, or never.
    • Scrollback search now wraps around when navigating past the first or last match.
    • A new configuration link-osc8 (default true) can be set to false to disable OSC 8 hyperlinks entirely. Disabled OSC 8 hyperlinks are not highlighted, previewed, copied, or opened.
    • Processes running in Ghostty now receive a GHOSTTY_SURFACE_ID environment variable that uniquely identifies the terminal they are running in.
    • The right-click context menu now has a "Close Split" item.
    • Upgrade to Unicode 18.
    • I/O throughput is 25% to 55% higher on macOS by reading from the pty concurrently with parsing previously read output.
    • VT processing is significantly faster across the board. Plain text is up to ~6x faster, real-world output (measured against a large asciinema dataset) is ~24% faster, grapheme-heavy output is ~3x faster, and DEC special graphics (line drawing), repeated characters (REP), hyperlink-heavy output, and scroll regions are all faster.
    • Large OSC sequences, such as OSC 52 clipboard writes, are parsed ~30x faster and small OSC sequences, such as title changes, ~6x faster.
    • Resizing with reflow is ~6x faster with large scrollback and 3x to 5x faster with scrollback heavy in wide characters such as CJK or emoji.
    • Terminals use significantly less memory. A new terminal now uses ~16 KiB of physical memory for its screen instead of 128 KiB on macOS, every terminal page uses 30% less memory, and memory freed from scrollback (such as by clearing it) is now returned to the operating system.
    • Kitty graphics are faster. Large image transfers are parsed in bulk using SIMD, zlib-compressed images decompress ~17% faster, pixel format conversion avoids an extra copy, and the per-frame cost of drawing images is much lower, especially with Unicode placeholder images on screen or long scrollback.
    • Formatting terminal contents is 1.5x to 8x faster, which speeds up clipboard copy (plain, HTML, and VT), write_screen_file and related actions, and scrollback search.
    • The renderer holds the terminal lock 2.7x to 11x less time per frame, and glyph and font lookups are faster.
    • command-palette-entry = clear removes all command palette entries, including the default entries.
    • window-padding-balance has a new value equal that balances padding equally on all four sides without capping the top padding.
    • theme now expands ~ to the home directory in theme file paths, including in separate light and dark themes.
    • +list-themes now supports g and G to jump to the first and last theme, and ctrl+d and ctrl+u to page down and up.
    • The terminal inspector can now copy terminal I/O events or export them to a file.
    • Bundled themes updated to release-20261019-151001-86a776d. This adds 356 new themes and renames or removes none. The colors of 10 existing themes changed upstream: Adwaita, Adwaita Dark, Atom One Light, Catppuccin Frappe, Catppuccin Latte, Catppuccin Macchiato, Catppuccin Mocha, Cursor Dark, Dark Modern, and Electron Highlighter.
    • Fix configuration parsing silently ignoring all settings after a comment or blank line that happened to end at an internal buffer boundary. This typically only affected long configuration files.
    • Fix a performance degradation where, after a long uptime, the renderer rebuilt its full terminal state on every frame.
    • Fix the automatically created configuration file being empty instead of containing the configuration template.
    • +edit-config works when $EDITOR or $VISUAL contains arguments, such as zed --new.
    • adjust-cursor-height works again.
    • Mouse selection improvements: dragging after a ctrl/cmd triple-click output selection now extends the selection by command output, autoscroll stops when the screen switches (e.g. to the alternate screen), a force touch on macOS selects the word at the press location without starting a drag, and releasing a drag no longer activates a link or prompt click.
    • Double-click word selection no longer continues across hard line breaks, and double-clicking either half of a wide character (such as CJK) selects the whole word.
    • Wide characters at the edges of a selection are now consistently rendered as selected and included when copying, including when the wide character wraps onto a new internal page.
    • Triple-click line selection no longer pulls in neighboring prompt text when clicking blank cells between OSC 133 prompt boundaries.
    • Link detection and double-click selection no longer merge prompt text with the command text next to it when shell integration is active.
    • File paths opened with cmd/ctrl-click no longer include trailing spaces, which broke opening paths printed by some TUIs.
    • Mouse releases are now reported to the program that received the mouse press when clicking at a shell prompt with click-to-move enabled. This fixes double-click selection in programs like fzf's ctrl+r history search.
    • Shell redraws after a resize are no longer processed at the old terminal size. This fixes one cause of duplicated or misplaced prompts after resizing.
    • Scrolling, such as clicking in the scrollbar, now works with very large scrollback (millions of lines).
    • Custom command-palette-entry actions with string parameters, such as set_tab_title, no longer have their parameters escaped when run from the command palette.
    • HTML clipboard copies no longer include a superfluous trailing newline.
    • Copying as VT (copy_to_clipboard:vt) and VT screen files now preserve OSC 8 hyperlinks, empty gaps between text, and cells that only have a background color, such as colored status bars. VT screen files also keep trailing blank rows.
    • The mouse pointer now restores the shape set by the running program (OSC 22) after releasing modifier keys instead of resetting to the default.
    • Custom shaders no longer receive swapped selection foreground and background color uniforms.
    • Ghostty no longer floods the logs with "adjusting page capacity" messages during output with many styles, graphemes, or hyperlinks.
    • Fix stale wrap and prompt state on rows reused after scrolling or erasing, which could cause incorrect copy, search, selection, and reflow results.
    • Fix stale rendering of the previous row after erasing or deleting a wrapped wide character.
    • Fix a freeze when reloading the configuration while a program is flooding the terminal with queries, such as color queries.
    • +list-themes no longer crashes on some keys when the search matches no themes, and the keypad down key now moves one row instead of 21.
    • Fix crashes in scrollback search after clearing the scrollback, resizing, or erasing history.
    • Fix crashes and viewport corruption when resizing with scrolled-back history or with the cursor near the bottom of the screen.
    • Fix a use-after-free crash when clicking or selecting text during heavy output.
    • Fix a possible crash when reflowing hyperlinks during a resize.
    • Fix possible crashes or memory corruption when scrolling or erasing rows across a page boundary that needed more capacity.
    • Fix possible crashes and memory corruption found via fuzzing when printing causes a page to grow, or after clearing the screen into scrollback.
    • Fix many latent crashes and undefined behavior in selection, pins, search, title and working directory updates, and resize error handling.
    • Fix a possible crash or corrupted input when many pty writes are queued, such as during large pastes.
    • Fix an out-of-bounds access when IME preedit text with wide characters is composed between existing wide characters, such as with Korean input.
    • Fix a crash when pressing or releasing mouse button 11.
    • Fix the write_screen_file, write_scrollback_file, and write_selection_file actions leaking two file descriptors on each use, which could eventually prevent opening new terminals.
    • Fix memory and file descriptor leaks in terminal I/O, including for writes in read-only mode and files read via the input configuration.

    Terminal Capabilities

    • vt: Kitty graphics animation is now fully supported: frame transmission, composition, animation control, and rendering.
    • vt: Kitty graphics relative placements (P=, Q=, H=, V=) are now supported, allowing images to be positioned relative to other images.
    • vt: Support the Kitty graphics transient image usage hint. Transient images are evicted first when image storage is full.
    • vt: The Kitty clipboard protocol (OSC 5522) is now implemented on macOS and GTK, including paste events (mode 5522). Reads and writes follow clipboard-read and clipboard-write, and a new clipboard-write-limit-bytes configuration limits the size of a single write.
    • vt: Support visibility reports (mode 2033 and CSI ? 998 n), which tell programs when the terminal is not visible, such as in a background tab or on another workspace, so they can stop rendering.
    • vt: Programs can resize the window with the xterm CSI 8 ; rows ; cols t sequence if the new vt-window-resize-allowed configuration is enabled (default off). The request is ignored in splits, windows with multiple tabs, the quick terminal, and fullscreen, maximized, or tiled windows.
    • vt: Support OSC 133 click_events=2, which reports prompt clicks with row coordinates relative to the prompt.
    • vt: Support soft terminal reset (DECSTR, CSI ! p), which resets modes, margins, and text attributes without clearing the screen.
    • vt: Support backarrow key mode (DECBKM, mode 67), which lets programs choose whether backspace sends DEL (0x7f, the default) or BS (0x08).
    • vt: Support the DECRQCRA and XTCHECKSUM screen checksum reports, which are mostly used by terminal test suites. Because a program can use these to read the screen contents, they are disabled unless the new vt-xt-checksum-report configuration is enabled. The new vt-xt-checksum-extension configuration controls how the checksum is calculated.
    • vt: Respond to CSI 19 t (report screen size in characters) and to DECXCPR (CSI ? 6 n) extended cursor position requests.
    • vt: DECRQM now answers ANSI mode queries (CSI Ps $ p), reports DECECM and other unimplemented ANSI modes as permanently reset like xterm, and no longer truncates mode numbers above 32767 in its reply.
    • vt: Ghostty terminfo now advertises overline support (Smol/Rmol), which lets tmux pass overlines through. DECRQSS SGR replies now include overline and curly, double, dotted, and dashed underline styles.
    • vt: The terminfo Se capability now resets the cursor to the configured cursor-style instead of a steady block. This fixes programs like Neovim leaving a block cursor behind on exit.
    • vt: OSC payloads are now limited to 8 MiB, Kitty graphics payloads to 65 MiB, and each cell to 64 combining codepoints, so terminal output can't easily exhaust memory. This also fixes a memory leak on invalid Kitty graphics data.
    • vt: Experimental support for the Glyph Protocol (APC 25a1), which lets programs register custom glyphs. Ghostty parses and answers requests but doesn't render registered glyphs yet.
    • vt: Parse the new program status protocol (OSC 7501), which lets programs report whether they are idle, working, done, blocked, or failed. This is the first terminal specification pioneered by the Ghostty project. libghostty can parse it all, but the Ghostty GUI ignores it for now.
    • vt: Parse (but do not implement) the Kitty desktop notification protocol (OSC 99).
    • vt: Parse (but do not implement) the Kitty drag and drop protocol (OSC 72).
    • vt: More tmux control mode fixes, including crashes that running tmux -CC could trigger. tmux control mode is still not hooked up to the GUI.
    • vt: Clearing the screen at a prompt (e.g. ctrl+l in bash or zsh) now moves prior output into scrollback even when the prompt is not on the last row. Previously, the output was erased.
    • vt: Kitty graphics: transmitting an image with an existing ID now replaces the image and removes its old placements, as the spec requires. Interrupted or failed retransmissions no longer leave stale images on screen.
    • vt: Kitty graphics: images now move with the text when a program scrolls with CSI S, CSI T, or scroll margins, and are clipped to the scroll region.
    • vt: Kitty graphics: automatically assigned image IDs no longer collide with IDs chosen by the program.
    • vt: Kitty graphics: delete commands now match the spec and Kitty. Point deletes (d=p, d=c) only remove placements at that cell, d=a only removes placements on the visible screen, range deletes accept empty ranges, and deleting a missing placement no longer frees the image.
    • vt: Kitty graphics: command validation and responses now match Kitty. This fixes missing responses for invalid image data that could hang clients, false positive query replies, lost IDs in chunked transfer replies, file transfers with an exact S size, and loads interrupted by a non-chunk transmission.
    • vt: Kitty graphics: cropped source rectangles are no longer stretched, and X/Y offsets are kept within the first cell.
    • vt: Kitty graphics: the cursor moves after tall images like Kitty does, so consecutive images no longer overlap.
    • vt: Full reset (RIS) no longer resets image-storage-limit to the default.
    • vt: OSC and APC sequences (such as Kitty graphics commands) canceled by CAN or SUB, or aborted by another control character, are now discarded instead of executed, matching xterm.
    • vt: With modifyOtherKeys level 2, control keys, keypad keys, and alt+escape now encode like xterm. F13 to F25, Help, and Menu now send xterm's function key sequences in all legacy encoding modes.
    • vt: Legacy alt-as-escape encoding now sends the full UTF-8 sequence for non-ASCII keys.
    • vt: Kitty keyboard protocol release events no longer repeat the typed text for dead keys or level 5 keys on GTK, which caused duplicated characters in programs like Neovim.
    • vt: ctrl+alt+shift+backspace now sends ESC BS in legacy key encoding, matching xterm.
    • vt: UTF-8 mouse mode (1005) now encodes the button correctly, fixing invalid reports for the back and forward mouse buttons.
    • vt: Foreground, background, and cursor colors reset with OSC 110, 111, or 112 now follow later configuration changes, such as a light/dark theme switch.
    • vt: Full reset (RIS) now restores palette colors changed with OSC 4.
    • vt: An empty OSC 22 now resets the mouse pointer shape to the default.
    • vt: Long desktop notifications (OSC 9 and OSC 777) with multibyte UTF-8 text are no longer dropped or shown as invalid UTF-8 when truncated.
    • vt: DCS strings now carry UTF-8 data. Previously, some UTF-8 bytes were dropped, ended the string early, or started a new control sequence.
    • vt: C0 controls 0x10 to 0x1F are now executed instead of printed as text, and UTF-8 encoded C1 controls are ignored, matching xterm.
    • vt: Erasing a full line (CSI 2 K) now clears its soft-wrap state, so erased rows no longer join together when the window is resized.
    • vt: The cursor and saved cursor keep the correct position when a resize reflows text, fixing an extra line wrap or overwritten text after resizing.
    • vt: Variation selectors (VS15/VS16) now apply to the preceding codepoint, fixing the rendering of some ZWJ emoji such as the pirate flag.
    • vt: Combining marks printed after a character in the last column now attach to that character.
    • vt: Characters above U+00FF, such as emoji, now print as-is instead of as a blank while a non-UTF-8 character set such as DEC line drawing is active.
    • vt: Single shifts (SS2/SS3) now apply only to the next printed character.
    • vt: Tab clear (TBC) fixes: CSI 0 g no longer sets a tab stop where there wasn't one, and CSI g with no parameter clears the tab stop at the cursor.
    • vt: Printing with autowrap (DECAWM) disabled clears the pending wrap, so re-enabling autowrap doesn't cause a spurious line wrap.
    • vt: With reverse wrap enabled, moving left after restoring a cursor with a pending wrap no longer jumps the cursor.
    • vt: Cursor movement respects margins and origin mode: CUB and backspace stop at the left margin, and CHA, HPA, VPA, HPR, and VPR no longer apply the margin offset twice in origin mode.
    • vt: Fix a crash when VS15 narrows a wide character under the cursor.
    • vt: Fix a crash or memory corruption after narrowing the terminal cuts a wide character in half on the alternate screen or with wraparound disabled.
    • vt: Fix a crash when a grapheme cluster widens in the last column and wraps inside or below a scroll region with grapheme clustering (mode 2027) enabled.
    • vt: Fix a slow memory and performance leak in graphics-heavy sessions where evicted Kitty images left their placements' tracked positions behind.
    • vt: Fix a memory leak when an OSC color sequence contains more than two requests.

    Shell Integration

    • A new ghostty +ssh CLI action wraps ssh and sets up Ghostty on remote hosts: it forwards Ghostty's environment and installs Ghostty's terminfo on the first connection to each host, caching successful installs. It can be used directly (ghostty +ssh [email protected]) or as an alias (alias ssh='ghostty +ssh --') without shell integration. The ssh-env and ssh-terminfo shell integration features now use it for every shell.
    • ssh-terminfo now always installs Ghostty's bundled terminfo on remote hosts instead of keeping an existing, possibly outdated, xterm-ghostty entry, and reinstalls it when a newer Ghostty changes its terminfo.
    • ghostty +ssh-cache has been reworked with positional destinations, a new --prune option, consistent output and exit codes, and error messages that name the cache file. See the breaking changes above.
    • ssh-terminfo now tells apart the same host on different ports, so terminfo is installed on each of them. ghostty +ssh-cache accepts host:port destinations.
    • ssh-env no longer overrides SetEnv entries in your ~/.ssh/config.
    • bash: Failed commands now report their real exit status on Bash 4.4+, so command finished notifications no longer report every command as successful.
    • nu: Tab completion for ssh and sudo now works with external completers such as carapace.
    • bash: The bundled bash-preexec, used only for Bash versions older than 4.4 such as macOS's /bin/bash, has been updated to 0.7.0.
    • zsh: Fix a stray { in the prompt and broken prompt marking when PS1 or PS2 ends with a bare %.
    • bash: Fix "command not found" errors in subshells that inherit PROMPT_COMMAND.
    • bash: Fix a syntax error when an existing PROMPT_COMMAND ends with a newline.
    • bash: Fix extra blank lines at the prompt when using ble.sh.
    • bash: Fix the shell integration hook being added twice when it is sourced again with an array PROMPT_COMMAND.

    macOS

    • macOS: Support macOS 27. This fixes the layout and background color of titlebar tabs, a thin border around the app icon, hidden titlebars covering the top lines of the terminal with Reduce Transparency enabled, and the Shortcuts "New Window" action opening two windows.
    • macOS: When a terminal's process exits, a native bar now appears at the bottom of the terminal instead of text being written into the terminal. Commands that fail or exit faster than abnormal-command-exit-runtime are highlighted in red.
    • macOS: Quitting, or closing a window, when multiple windows or tabs have running processes now offers "Review Windows...", which steps through each one so you can decide what to close.
    • macOS: The command palette now highlights matching text, matches initials, searches action descriptions, and ranks results by where they matched.
    • macOS: The search bar now remembers the last search and shares it with other apps through the system find pasteboard, like Safari and Terminal.app.
    • macOS: Screen readers such as VoiceOver are now notified when the selection changes instead of reading a stale selection.
    • macOS: The AppleScript terminal class and the Shortcuts terminal entity now expose pid (of the foreground process) and tty.
    • macOS: AppleScript tabs and terminals have a new read-write name override property to set or clear a custom title.
    • macOS: Middle-clicking a tab closes it with macos-titlebar-style = tabs.
    • macOS: The version in the About window now links to the release notes for that version.
    • macOS: Updates that are downloaded and installed automatically no longer prompt you to restart. Checking for updates manually still offers to restart.
    • macOS: toggle_background_opacity now applies to every tab in the window, and new windows inherit the current state.
    • macOS: cmd+arrow_up and cmd+arrow_down now run their configured keybinds, which default to jump_to_prompt. Ghostty 1.3 always scrolled to the top or bottom of the scrollback instead, ignoring the configuration. To scroll to the top or bottom, use cmd+home and cmd+end.
    • macOS: In the configuration errors window, Return reloads the configuration and Escape ignores the errors.
    • macOS: Ghostty launches about 15% faster to a visible window and draws its first frame about 27% sooner.
    • macOS: Terminals that aren't visible, such as background tabs, now release their GPU resources and rebuild them when shown again. With 20 background tabs, GPU memory drops from about 385 MiB to 18 MiB. Metal buffers also no longer over-allocate when they grow.
    • macOS: Lower idle CPU and energy use. The display link now pauses when there is nothing to draw, and unfocused terminals that are animating draw at most once per display refresh instead of once per write.
    • macOS: Update Sparkle to 2.9.6, which fixes several security advisories in Sparkle, including CVE-2026-47121 and CVE-2026-47122.
    • macOS: Global keybinds no longer stop working after macOS disables Ghostty's event tap.
    • macOS: Fix IME composition issues. Korean text being composed is now committed instead of lost when pressing an arrow key, and control-key IME shortcuts such as Japanese input's ctrl+j no longer send control characters to the terminal.
    • macOS: Text from input methods, dictation, and the emoji picker is now sent as typed input instead of pasted text. Programs no longer treat dictation as a paste, and switching input sources mid-composition sends the pending text as keys, matching Terminal.app.
    • macOS: Unicode Hex Input can now enter characters outside the Basic Multilingual Plane, such as emoji, typed as surrogate pairs.
    • macOS: font-thicken now also applies to IME preedit text.
    • macOS: option+backspace and other modified Backspace keys now report their modifiers with the Kitty keyboard protocol instead of sending a bare DEL.
    • macOS: Pasting and dropping text now prefer plain text over URLs, so a path copied from apps like Transmit pastes as a path instead of an sftp:// URL.
    • macOS: The search bar keeps focus when you click in it or on the next/previous buttons, and the terminal's focus state is now correct while search is open.
    • macOS: The Find Next and Find Previous menu items and the navigate_search and end_search keybinds now work correctly, including while the search field is focused.
    • macOS: Pressing Enter in the search bar no longer blocks confirming an IME candidate.
    • macOS: Clicking a command palette entry with the mouse now runs it instead of closing the palette.
    • macOS: The command palette now gets focus and paste when opened from the inline tab title editor.
    • macOS: Holding cmd+t to create many tabs now leaves the newest tab focused.
    • macOS: Fix an empty "ghost" tab or window that could appear when a tab was closed right after it was opened.
    • macOS: Titlebar tabs no longer disappear after creating a tab from "Show All Tabs".
    • macOS: Double-clicking the window title now zooms the window with macos-titlebar-style = tabs.
    • macOS: Moving a tab with macos-titlebar-style = tabs on macOS 26 no longer briefly shows the neighboring tab.
    • macOS: The inline tab title editor stays in place while the window is resized.
    • macOS: Fix tabs flashing when switching tabs after a program changed the background color with OSC 11, and the window chrome keeping the old color after a light/dark theme switch.
    • macOS: The macos-glass-regular and macos-glass-clear options for background-blur now layer the glass over the background color, and focused windows are no longer less transparent than unfocused ones.
    • macOS: The native titlebar no longer cuts off the end of the title when using a custom window-title-font-family.
    • macOS: Fix terminals rendering at a stale size under heavy system load or during rapid resizes from window managers.
    • macOS: Splits dragged into another tab or window now render immediately, and the source window keeps keyboard focus.
    • macOS: The split zoom indicator no longer stays visible after the other splits of a zoomed split are closed, such as with AppleScript.
    • macOS: The split divider now uses the standard row and column resize pointers.
    • macOS: window-save-state = never now also stops macOS from taking window restoration snapshots, which could stall focus changes between windows.
    • macOS: Window state saved by Ghostty 1.2 or later is now migrated, so windows and tabs are restored after updating Ghostty.
    • macOS: Tabs created while the screen is locked now initialize correctly.
    • macOS: Quitting now asks for confirmation when windows with running processes are minimized or the quick terminal is hidden.
    • macOS: OSC 52 clipboard read confirmations no longer steal focus. If the terminal is unfocused, Ghostty rings the bell and shows the prompt when you return to it.
    • macOS: Splits in the quick terminal now also set GHOSTTY_QUICK_TERMINAL=1.
    • macOS: The quick terminal no longer reopens at a stale size after a display is reconnected at a different resolution.
    • macOS: The "New Ghostty Tab Here" and "New Ghostty Window Here" services now open the correct directory when given a plain-text path.
    • macOS: Working directories passed from Services, Shortcuts, and AppleScript are now normalized, fixing Nushell and zsh %1~ prompts.
    • macOS: ghostty -e no longer opens the command's file arguments as extra terminals, e.g. ghostty -e vim file.txt.
    • macOS: Opening a .command file from Finder no longer corrupts non-ASCII characters in its path.
    • macOS: The Shortcuts terminal entity now reports the correct kind, title, working directory, and screenshot for new terminals.
    • macOS: The Shortcuts "New Terminal" action now works with commands that have arguments and with a command field that was cleared.
    • macOS: AppleScript send key now works for character keys, not only special keys like enter, and respects macos-option-as-alt.
    • macOS: Update pill fixes: update errors are now shown, "Install and Relaunch" no longer asks for confirmation, and the cancel option is hidden once an update can no longer be canceled.
    • macOS: The default app icon follows the system icon style again after changing it in System Settings, and custom icons now apply to the app in Finder.
    • macOS: The dock icon bell badge now appears when notification permission was granted earlier without badge permission.
    • macOS: The Copy menu item is disabled when nothing is selected.
    • macOS: Menu items now show the correct shortcut for keybinds on physical keys (e.g. super+backquote), uppercase letters, forward delete, and the scroll_to_selection and search_selection actions.
    • macOS: The secure input indicator's popover arrow now points at the icon.
    • macOS: Fix a rare permanent freeze after waking from sleep or changing displays. macOS did not mark the app as "Not Responding", so it could only be killed.
    • macOS: Fix a crash when closing a tab, most easily triggered with undo-timeout = 0.
    • macOS: Fix a crash when opening a new tab from a native fullscreen window.
    • macOS: Fix a crash caused by a data race when reading cached terminal contents.
    • macOS: Fix a crash when OSC 52 clipboard confirmation prompts overlap.
    • macOS: Fix crashes when CoreText returns null, such as for fonts without a display name or under severe memory pressure.
    • macOS: Fix closed windows leaking with transparent titlebars (the default), which made Ghostty and WindowServer use more CPU and memory over time.
    • macOS: Fix a memory leak each time Ghostty reads terminal text, such as for copy, Quick Look, or accessibility.
    • macOS: Fix an IOSurface memory leak when scripts rapidly create and close terminals.
    • macOS: Fix a Mach port leak, and a gradual slowdown, while global keybinds wait for Accessibility permission.

    GTK (Linux, FreeBSD)

    • GTK: Splits can now be rearranged with drag and drop, matching macOS. Drag a split by its handle and drop it onto another split, including splits in other tabs and windows.
    • GTK: Ghostty now renders at the true fractional scale (e.g. 125% or 150%), so text and box-drawing characters are sharp instead of blurry under fractional scaling.
    • GTK: The renderer no longer uses GtkGLArea. Ghostty now renders with EGL entirely on the render thread and hands finished frames to GTK as DMABUFs, so the main thread no longer does any OpenGL work.
    • GTK: Windows can now be renamed using the menu, command palette, or the new prompt_window_title and set_window_title binding actions.
    • GTK: A new +new-tab CLI command opens a new tab in a running Ghostty instance. When run from inside Ghostty, the tab opens in the same window. It accepts the same -e, --working-directory, and --title flags as +new-window.
    • GTK: A new +toggle-quick-terminal CLI command toggles the quick terminal of a running Ghostty instance, useful for binding in window managers without global shortcut support.
    • GTK: Global keybinds now use the vicinae-hotkey-v1 Wayland protocol when the compositor supports it (e.g. Hyprland 0.56+), falling back to the XDG desktop portal otherwise. Ghostty shows a desktop notification if a global keybind can't be registered.
    • GTK: quick-terminal-screen is now supported on Wayland. The default, main, places the quick terminal on the compositor's primary output (or the first monitor if the compositor doesn't report one). Set it to mouse to let the compositor choose, which was the previous behavior.
    • GTK: On Wayland, background-blur now uses the compositor-agnostic ext-ba

    Original source
  • Oct 22, 2026
    • Date parsed from source:
      Oct 22, 2026
    • First seen by Releasebot:
      Oct 30, 2026
    Warp logo

    Warp

    Changelog — 2026

    Warp releases weekly updates that improve agent workflows, Antigravity CLI notifications, and ChatGPT Business usage-limit messaging. The update also fixes file operations, cloud-agent behavior, MCP compatibility, billing totals, and other reliability issues.

    Warp release notes for 2026. Updates ship weekly, typically on Thursdays.

    2026.10.22 (v0.2026.10.21.08.25)

    Improvements

    • Preserve the explicit order of agent request inputs across tasks. (#16328)
    • Support structured notifications and delayed-enter input for Antigravity CLI (agy) (#16373) — @jgfurlan ✨
    • ChatGPT Business users can copy the admin-request message shown after a usage limit. (#16522)

    Bug fixes

    • Agent patch deletions now remove files, and file moves save to their requested destination, including remote sessions. (#16444)
    • Billing usage totals now include fractional credits and cents before rounding the displayed amounts. (#16474)
    • Fixed Pi and other ACP-driven parent agent runs failing at exit with “Tried to add messages to non-existent task” when a child agent sent them a message. (#16507)
    • ACP follow-up prompts no longer briefly show a cancelled status. (#16513)
    • Use the selected Bash executable when starting shell sessions. (#16520) — @maxmilian ✨
    • Match cloud-agent command exits to the block where each command started. (#16548)
    • Fixed a race that could leave completed agent command details expanded. (#16564)
    • Fixed agent-run lists failing to load when the server returns an empty list as null. (#16568)
    • Fix MCP startup compatibility by negotiating supported protocol revisions instead of initializing every server at the latest revision. (#16574)
    • Pre-warmed cloud agents replace standby Git credentials and use the assigned run’s author identity while preserving setup overrides. (#16601)
    • Fixed connections to legacy MCP servers that reject newer protocol revisions with a transport-level version error. (#16620)
    • Reject connections authenticated by compromised eMudhra intermediate certificates when using bundled certificate verification. (#16622)

    Oz updates

    • Initial file attachments are sent as resource links to ACP agents, matching follow-ups. (#16486)
    • A failed Git authentication no longer clears managed credentials needed by other cloud-agent checkouts. (#16559)
    • Resumed runs can reuse pre-warmed sandboxes while preserving conversation history and queued follow-ups. (#16598)
    Original source
  • Oct 15, 2026
    • Date parsed from source:
      Oct 15, 2026
    • First seen by Releasebot:
      Oct 18, 2026
    iTerm2 logo

    iTerm2

    Version 3.7.6

    iTerm2 releases version 3.7.6 with safer AI key handling and a smoother Companion setup, plus fixes across AI chats, tmux, SSH, session restoration, Cockpit, and more. The update also improves stability, privacy, and everyday terminal workflows.

    Version 3.7.6 was built on October 15, 2026.

    Version 3.7.5 was accidentally built without the bug fixes below. This release includes them.

    Improvements

    • The Companion setup wizard no longer asks for an API key when AI already works, or when you chose a model manually in Settings > General > AI. If that model isn’t set up yet, the wizard says so and lets you finish setup anyway.
    • AI API keys are now sent automatically only to their own provider’s servers. Before, the Automatic API key choice could send your OpenAI key to a gateway such as OpenRouter or a company gateway hosted on Azure. Models you already set up keep sending the key they sent before.

    Bug Fixes

    • Fixed crashes when a Set Profile Setting trigger fired, when a trigger had no regex (such as an event trigger written by hand in a Dynamic Profile), when the bell rang in a profile whose Bell Sound wasn’t a sound name, and when using a tmux integration window that was left open after detaching.
    • Answering “Always” to “Close tmux windows after detaching?” now closes only the tmux integration windows left open by the detach. It used to close every session in the app.
    • When an administrator turns off generative AI, AI chat timers and watches no longer send anything to the AI model, and Edit > Engage Artificial Intelligence in the Composer shows the lockout alert instead of sending your text.
    • Debug logs no longer include AI API keys or the values of custom HTTP headers configured for AI models.
    • Command safety checks that use a cheaper model now keep a manually configured model’s custom headers, API key choice, and model name. Before, they could send the request with a different key or ask for a model your endpoint doesn’t have.
    • Choosing a Preset in the manual AI model editor now also resets its custom headers and API key choice.
    • Stopping an AI chat reply while another chat is also replying no longer cancels the other chat’s reply, and the stopped reply now really stops downloading instead of running (and using up tokens) until it finishes.
    • Stopping an AI chat reply and then sending another message no longer shows the rest of the stopped reply as the answer to the new message.
    • AI chats now keep their session links, watches, and timers across a quit when window restoration brings the sessions back, including watches on tmux integration panes. Timers no longer fire before windows are restored, and unlinking a chat from its session no longer cancels its timers.
    • Editing or deleting an AI chat message now fully removes the later conversation, so the AI no longer sees leftover command results from it, and a message you deleted while the AI was still replying is no longer sent.
    • Fixed Notify on Status Change reporting that a session changed from “none” when its status had already been set before you turned the notification on, and alerting when a program merely restated that status.
    • The Prevent Sleep setting in Settings > Profiles > Session now takes effect when you click it, and keeps preventing sleep after Session > Restart Session or Undo Close.
    • A program that sends a flood of status reports (OSC 7501) no longer makes iTerm2 fall far behind and use a lot of memory.
    • The AI Usage toolbar item now finds the claude command when iTerm2 was opened from the Dock, uses the CLAUDE_CONFIG_DIR set in your shell, and no longer uses gigabytes of memory when a custom usage command prints too much.
    • Installing or reinstalling the Claude Code Integration no longer replaces a Claude Code settings.json that has a syntax error, which erased all your other Claude Code settings. It now leaves the file alone and asks you to fix it and try again. The integration’s hook is also no longer removed when CLAUDE_CONFIG_DIR names ~/.claude in a different way.
    • Fixed restored sessions bringing lines that had been erased by a clear screen back onto the screen, above the newer output, with the cursor in the wrong place.
    • When an SSH Integration connection dropped, for example because the ssh process or the remote server was killed, the session hung: nothing you typed afterward appeared. It now ends the connection and returns to the local shell.
    • In a session that ssh’ed to another machine without SSH Integration, the current directory (and paths used by Upload and Paste Path) no longer switches to the local Mac’s directory after you run a command.
    • Uploading several files that have the same name in one SSH Integration paste now keeps all of them instead of overwriting one with another.
    • The Internet-Free Install of shell integration no longer gets stuck at its first step for zsh users, and that step can no longer be skipped, which made later steps write to an invalid path.
    • Cockpit fixes: Opt-Return and Opt-Shift-Return now send instead of erasing what you typed, only the selected text is sent when there is a selection, the caret and chips no longer jump or change when a session’s status changes, and text on a line with an @-mention chip is no longer misaligned.
    • Floating pane fixes: Undo Close now restores a floating pane even after its undo timeout, reattaching to a tmux session no longer moves floats that sit beyond column 80, and a native session is never put into a tmux integration tab as a floating pane.
    • In tmux integration, a layout change made by tmux while Find > Filter was open on a pane no longer hides pane %0 or moves keyboard focus away from the filtered pane.
    • Password manager fixes: in “Require Authentication on Every Open” mode it now asks every time it opens, including the standalone window, shows no accounts until you authenticate, and shows the website login sheet instead of a system prompt for each login. In “Once per Launch and after Screen Locks” mode, locking the screen now locks it again even when it was only unlocked to save a website password.
    • Fixed a bug where turning on “Use AI to check safety of commands before running them” on a Mac without Apple Intelligence was turned back off the first time you used AI chat, which then asked whether to enable it again.
    • With macOS’s “Add period with double-space” on, typing two spaces in the terminal after using the Composer no longer types “. ”.
    • Move Tab Left and Move Tab Right no longer unpin a pinned tab and put it into a neighboring tab group.
    • Session Status now follows a session rename.
    • it2 session list --format now works. The bundled it2 was out of date.
    • {{FILE}} in an AI command suggestion now expands to the whole filename instead of the part you hadn’t typed yet.
    • With the GPU renderer off, a color change in the middle of a right-to-left word no longer paints the whole word in one color.
    • When no valid UNIX locale matches your language and region, the prompt to pick one now appears as a normal dialog the first time a hotkey window opens, instead of as a sheet on the not-yet-visible window.
    • Closing the Companion setup wizard while it is installing now cancels setup. Before, it kept going, asked for an administrator password with no explanation, and reopened the wizard if you declined. Cmd-W now closes the wizard instead of a terminal session.
    • Finder’s Get Info now shows iTerm2’s real version in every language instead of “3.7.dev”.
    Original source
  • Oct 15, 2026
    • Date parsed from source:
      Oct 15, 2026
    • First seen by Releasebot:
      Oct 16, 2026
    Warp logo

    Warp

    2026.10.15 (v0.2026.10.14.08.27)

    Warp adds a shortcut to switch Markdown files between rendered and raw views, recognizes Muse Code as a CLI agent, and improves transcript handling, session reliability, and cloud agent workflows.

    Improvements

    • Added a keyboard shortcut (⌘+E on macOS or Ctrl+E on Windows/Linux, rebindable) to toggle Markdown files between rendered and raw view. (#16413) — @arihanv ✨
    • Warp now recognizes Muse Code as a first-class CLI agent, with branded session icons and rich-input support. (#15999) — @nwp ✨

    Bug fixes

    • Fixed conversation transcript downloads with self-hosted storage. (#16445)
    • Fixed Claude transcript capture and resume paths on Windows and for project directories containing special characters or long names. (#16428)
    • Recover cloud Oz sessions when an agent command exits the persistent shell. (#16148)
    • Prevent session sharing from reconnecting indefinitely when a message cannot be delivered. (#16071)
    • Claude Code harness runs no longer report completion and re-open on every assistant turn while background tasks, subagents, or scheduled wakeups are still running; completion is reported once the session is actually idle, or immediately on finish-task. (#16367)
    • Fixed agents hanging when an unfinished shell command waits at a continuation prompt. (#12934)

    Oz updates

    • Cloud agents retry startup metadata requests for up to 30 seconds to allow execution claims to finish. (#16438)
    • Orchestrators can attach batch and per-child run metadata for grouping and setup workflows. (#16396)
    • Fixed cloud agents waiting for path approval when editing MCP configuration files. (#16402)
    • Cloud agents periodically save workspace handoff checkpoints during a run. (#16391)
    Original source
  • Oct 7, 2026
    • Date parsed from source:
      Oct 7, 2026
    • First seen by Releasebot:
      Oct 10, 2026
    Warp logo

    Warp

    2026.10.07 (v0.2026.10.07.08.29)

    Warp adds Kiro CLI support in its coding-agent toolbar and rich input, improves cloud agent reliability and Oz workflows, and fixes a wide range of crashes, auth issues, completions, and Windows runner problems. It also adds clearer timeouts, video recording on Windows, and default runner control.

    Improvements

    • Added Kiro CLI support to Warp’s third-party coding-agent toolbar and rich input. (#16243)
    • Codex run usage now reports cache-write token counts when available. (#16230)

    Bug fixes

    • Fixed a crash when navigating terminal history with the Up or Down Arrow. (#14396) — @rhinoc ✨
    • Fixed “Rename tab” and “Rename pane” from the tab context menu not focusing the rename editor. (#16303, #16294)
    • Fixed MCP OAuth authentication with providers that require authorization response issuer validation, including Linear. (#16314)
    • MCP tool calls fail when a response stream ends without a result and time out instead of waiting indefinitely for unresponsive servers. (#16219)
    • Follow-up messages sent through a shared session can interrupt an agent’s running shell command and continue without falsely cancelling the conversation. (#16266)
    • Prevented repeated authentication refresh requests after token and proxy failures. (#16099)
    • Fixed rejected Firebase refresh tokens falling through to the authentication proxy instead of reporting the credential error. (#16336)
    • Fixed native zsh completion requests not returning when shell completions are uninitialized or fail. (#16268)
    • Fixed missing file-path completions when bundled and native completions both return no suggestions. (#16213)
    • Align fish and PowerShell right prompts with the terminal edge while preserving zsh’s default spacing. (#16264)
    • Avoid a WSL subprocess when listing the working directory from the prompt chip. (#16165)
    • Fixed a crash when settings-file errors update an unavailable Settings pane. (#16249)
    • Fixed a crash during undo-close cleanup when a tab’s pane group is unavailable. (#16251)
    • Fixed runner list failing for a whole team when one runner uses an OS or architecture the installed client doesn’t recognize yet. (#16237)
    • Fixed Claude Code and Codex cloud agents on Windows runners failing during Warp plugin setup. (#16307)
    • Fixed the GitHub CLI not being authenticated for cloud agents on Windows runners. (#16238)
    • Fixed cloud agents on Windows runners failing to clone private repositories. (#16236)
    • Fixed Warp-managed Factory agents failing during environment setup on Windows runners. (#16234)
    • Fixed cloud agents using the runner’s AWS credentials instead of the configured Bedrock role. (#16185)

    Oz updates

    • Set an environment’s default runner with oz environment update --default-runner . (#16259)
    • Cloud runs report which environment setup command timed out instead of waiting until the sandbox expires. (#16219)
    • Claude Code and Codex follow-ups now report resumed activity even when the client retains a stale in-progress state. (#16217)
    • Improved cloud agent startup reliability by preventing overlapping workload-token refreshes within the shared API client. (#16167)
    • Unattended CLI agent runs now end as blocked instead of hanging when the agent stops to ask for user input. (#16232)
    • Computer-use agents on Windows cloud runners can now record video. (#16260)
    Original source
  • Sep 30, 2026
    • Date parsed from source:
      Sep 30, 2026
    • First seen by Releasebot:
      Oct 5, 2026
    Warp logo

    Warp

    2026.09.30 (v0.2026.09.30.08.29)

    Warp adds team switching from Settings, improves vertical tab search and fzf shell integration, and fixes Windows startup, model preferences, tab focus, completions, history search, cost settings, and spend limit alerts.

    Improvements

    • Added the option to switch teams from Settings > Teams
    • Vertical tabs search now matches and highlights tab group names
    • Added fzf Alt-C support across bash, zsh, and fish shell integrations

    Bug fixes

    • Fixed two windows opening when launching Warp on Windows
    • Fixed model preference being reset when the team model catalog refreshes
    • Fixed focus not being restored after closing a tab context menu
    • Fixed the typed query not being forwarded to fzf Ctrl-R history search in zsh
    • Fixed the layout of the external fzf Ctrl-R history picker
    • Fixed flag completions after a POSIX double dash (—)
    • Fixed agent management costs not honoring the Credits/Dollars setting
    • Fixed a panic when /model targets a closed window
    • Fixed scope-specific spend limit alerts
    Original source
  • Sep 16, 2026
    • Date parsed from source:
      Sep 16, 2026
    • First seen by Releasebot:
      Sep 18, 2026
    Warp logo

    Warp

    2026.09.16 (v0.2026.09.16.08.27)

    Warp adds fzf and atuin triggers, native shell completions, better history search, workspace and team management updates, Windows backdrop support, Oz CLI secret creation, and a range of bug fixes across agents, tabs, sessions, and recordings.

    New features

    • You can now trigger fzf (ctrl-r or ctrl-t) and atuin if it’s set up with your shell. (#15903)
    • Added native shell completions alongside Warp’s built-in completion specs. By default, the native shell completions will be generated if Warp’s built-in completion has no suggestions. This can be changed in Settings > Features > Terminal Input. (#15903)

    Improvements

    • Improved parallel clone error reporting to list only the repositories that actually failed. (#16006)
    • Added oz secret create docker-registry to create container registry credential secrets from the CLI. (#15913)
    • Discover and cache build tools in nested repository directories. (#15844)
    • Workspace admins can now remove members from a workspace directly from team settings. (#15905)
    • [Windows] Materials are now supported for the backdrop of Warp windows in Settings > Appearance > Window > Backdrop. (#15879)
    • Improved command history search ranking using match quality and usage signals. (#15903)
    • Native workspace members can leave a team without losing workspace access. (#15880)
    • Native workspace users can browse and join another open team from Teams settings. (#15881)

    Bug fixes

    • Fixed an issue where new users who quit sign-up partway could be shown the existing-user ‘Introducing universal agent support’ onboarding on their next launch. (#16010)
    • Stop Warp Agent CLI startup when team metadata cannot be refreshed. (#15932)
    • Add tab group persistence to (legacy) launch configs. (#14624) — @maxmilian ✨
    • Fixed a crash after dragging a Settings tab between windows. (#15948)
    • Fixed cloud agent commits sometimes ignoring a customer’s git config --global user.name/email setup command. (#15869)
    • Prevented a crash when confirming a file discard more than once in Code Review. (#15884)
    • Opening a subagent in the web session viewer no longer replaces the run’s URL, so refreshing or sharing the link keeps you on the whole run instead of a single subagent. (#15317)
    • Stopping a shared Agent Mode conversation from a viewer or via conversation steering now interrupts the agent’s running command instead of letting it run to completion. (#15906)
    • Fixed a new tab group’s terminal stealing focus while its name was being typed, which saved the partially-typed name. (#14895) — @maxmilian ✨
    • Fixed macOS computer-use recordings reporting near-zero duration. (#15920)
    • Fixed duplicate network requests when loading agent shared sessions. (#15829)

    Oz updates

    • Fixed native Oz follow-up prompts interrupting one another instead of each reaching the agent. (#15921)
    • Preserved team-scoped credentials when launching orchestrated agent runs. (#15863)
    • Fixed follow-up messages with attachments waiting until an agent finished its turn instead of being delivered at the next steering opportunity. (#16046)
    Original source
  • Sep 9, 2026
    • Date parsed from source:
      Sep 9, 2026
    • First seen by Releasebot:
      Sep 11, 2026
    Warp logo

    Warp

    2026.09.09 (v0.2026.09.09.08.26)

    Warp adds first-class Grok Build support, editable keyboard shortcuts, richer Command Palette and shell handoff improvements, plus a slate of bug fixes across workspaces, orchestration, agents, and web. Oz also gets team-aware listings, pickers, and credentials support.

    New features

    • First-class Grok Build (SpaceXAI grok) support. Detects sessions, adds branded chrome in the footer, and enables rich input mode. (#14228) — @nwp ✨

    Improvements

    • Create New Window is now an editable keyboard shortcut, so it can be remapped or unbound. (#15771) — @tkossak ✨
    • Added completions for git merge-base. (#15769)
    • Attach file is now a Command Palette action with an editable, unbound-by-default keybinding. (#15762)
    • Fish ctrl-r now hands off to PatrickF1/fzf.fish history search, not only junegunn fzf. (#15744)
    • Extended shell widget handoff to fzf’s ctrl-t file search, alongside the existing ctrl-r history-search handoff. (#15513)

    Bug fixes

    • Fixed remote orchestration children launched by team service accounts requesting invalid personal ownership. (#15866)
    • Fixed unsent prompts being cleared after selecting a model through the /model keyboard shortcut. (#15870)
    • Fixed Agent API key creation requiring users to re-select the default agent. (#15825)
    • Fixed the prompt alert action for teamless native-workspace users who reach their limit. (#15853)
    • Hid team creation and empty team discovery prompts for teamless native-workspace users in Warp Drive. (#15790)
    • Teamless workspace users now see a clear Cloud Mode blocker instead of environment setup or a misleading agent-harness error. (#15794)
    • Fixed global file-based MCP tools that were missing from the first agent turn. (#15755)
    • Fixed dynamic Bash prompts being evaluated twice when Shell (PS1) is enabled. (#15792)
    • Fixed transcript persistence and skill discovery for third-party agent harnesses in single-repository cloud workspaces. (#15787)
    • Fixed a crash when a character at the end of a terminal line changes from single-width to double-width. (#15763)
    • Prevent a crash when smart-selecting RTL text whose visual glyph order reverses logical indices. (#15772)
    • On Warp on Web, switching teams now updates the current window instead of replacing the session. (#15740)
    • Command X-Ray now describes git ls-remote flags such as --branches. (#15756)
    • Third-party harnesses no longer hang the driver after /exit fails to stop the CLI. (#15728)
    • WASM conversation viewer now shows the web top bar for orchestrated factory sessions. (#15754)

    Oz updates

    • Environment pickers now show personal environments and environments for the selected window team. (#15850)
    • Added team selection to oz run list. (#15811)
    • Added team selection to runner listing and name-based updates. (#15809)
    • API key list, create, and expire commands now respect the selected Oz CLI team. (#15806)
    • Oz agent catalogs now follow active team selection. (#15807)
    • Environment lists and interactive pickers now follow the selected team. (#15805)
    • Added team selection to oz model list for team-specific model catalogs. (#15804)
    • Oz agents can use refreshed Entra credentials to write to Azure DevOps. (#15840)
    • Claude Code and Codex runs can now access Factory MCP automatically. (#15827)
    Original source