Skip to content

Lesson 07 · 24 in the route · 3 min read · Level 0

Updating macOS

macOS 15.3.1 to 27.0.1 and what changed.

The story behind this lesson Updating macOS and no longer trusting the number I wrote down yesterday

Este es el post más corto de la serie porque la actualización en sí fue un trámite. Lo que valió la pena fue lo que reveló sobre mis propios apuntes. Los pasos están en actualizar macOS.

Por qué había que actualizar

Dos señales apuntaban en la misma dirección:

  • brew doctor avisaba que las Command Line Tools estaban demasiado desactualizadas. Se arregla desde Actualización de software.
  • En la App Store, Xcode me pidió una versión de macOS más nueva que la que tenía. La captura muestra a Xcode 27 pidiendo macOS 26.6.

Mi plan de arranque ya incluía actualizar macOS y correr xcode-select --install, en ese orden: primero el sistema, luego las herramientas de línea de comandos. Es el orden que seguí; no probé el inverso.

Qué pasó al terminar

Dos cosas, ninguna grave:

  1. Al volver a conectarme, ssh mac dio timeout. Ya conté en el post 04 que la causa fue una IP nueva.
  2. Los apuntes manuales que había tomado decían que la Mac tenía macOS 15.3.1. Cuando después hice el inventario por comando, sw_vers devolvió 27.0.1.

Ese segundo punto es el que me interesa. No tengo registrado paso por paso cómo fue el salto entre una versión y otra: lo que tengo es la captura de la descarga de macOS 27.0.1 y los dos números, el de mis apuntes y el medido. Lo honesto es decir eso: mis notas se quedaron atrás de la máquina.

La regla que saqué

En la guía, el paso de inventario se hace con un solo comando desde Windows:

ssh mac 'sw_vers; uname -m; df -h /; brew --version; claude --version'

Y la tabla de versiones sale de esa salida, no de la memoria. Lo dejé escrito como nota en la propia guía: manda lo que dice sw_vers hoy, no lo que se anotó ayer.

Hay un caso parecido con el disco. Medí 111 GiB libres con df y 119,1 GB con diskutil. No es un error: df cuenta en GiB (1024³) y diskutil en GB (1000³), y además mira el contenedor APFS completo. Son la misma realidad medida de dos maneras. Pero si hubiera anotado solo una cifra de memoria, la siguiente persona que mida no entendería por qué no coincide.

Mi objetivo para el disco es más de 150 GB libres, y todavía no lo cumplo: Xcode, las cachés de Homebrew y Node, y los proyectos de Blender crecen rápido. Ese pendiente sigue abierto.

Qué haría distinto

  • Actualizar el sistema antes de instalar nada que dependa de las Command Line Tools, como ya indicaba mi plan.
  • Anotar la IP de la Mac antes de reiniciarla, o tener lista la reserva en el módem.
  • No escribir versiones a mano en documentos que otras personas van a leer: generarlas con un comando y fechar la salida.

Lo que me llevo

Un inventario sin fecha ni comando es una opinión. Con las dos cosas, es una medición.

Siguiente: el kit de configuración de Claude Code en la Mac, con sus pruebas en dos versiones de bash.

Goal

Move the Mac from macOS 15.3.1 to a version that supports Xcode 27, and then check, over SSH, that the tools from step 02 still respond.

Why

A major macOS update touches everything underneath your tools: the system, the Command Line Tools, the network. So it pays to know beforehand what changes and to have one command that measures it afterwards. Here the reason for updating was concrete: the Xcode listing in the App Store requires a minimum macOS version.

Steps

  1. Check the requirement. In the App Store, the Xcode listing (version 27.0) says “Requires macOS 26.6 or later”.

    (capture of the real setup: not published; see docs/CAPTURAS.md for the demo-mode ones)

  2. System Settings → General → Software Update. The screenshot shows “Downloading macOS 27.0.1…” with the progress bar. This is a manual step (the owner, with the graphical interface; a major update restarts the Mac).

    (capture of the real setup: not published; see docs/CAPTURAS.md for the demo-mode ones)

    The sources do not explain why 27.0.1 was installed and not 26.6, the minimum Xcode asked for.

  3. When the Mac comes back, update the Command Line Tools too (the same software update panel offers them; see “What actually went wrong”).

What actually went wrong

  • Version mismatch between logbook and reality. The manual notes say macOS 15.3.1 (build 24D70); the live command, later, said 27.0.1 (build 26A434). The Mac had been updated in between. Rule: what sw_vers prints today wins, not what was written down yesterday.
  • The Command Line Tools became outdated. brew doctor warned “Your Command Line Tools are too outdated” (recorded in the HANDOFF of session 1). The fix is to install the CLT update from Software Update; in the overnight run session the owner said that “the Command Line Tools are updating”.
  • Side effect on the network. After the update, the Mac’s IP changed and ssh mac gave Connection timed out: see 04-red-y-dhcp.md. The sources do not prove that the update caused the change; only that it happened afterwards.

How to verify

Same command before and after, from Windows:

PS> ssh mac 'sw_vers; claude --version; brew --version'
Before (logbook)After (live sw_vers, 2026-10-04)
macOS15.3.1 (24D70)27.0.1 (26A434)
Claude Code2.1.2892.1.289
Homebrew7.0.77.0.7

The installed tools did not change version with the update (Homebrew and Claude Code the same before and after) and they answered over SSH.

Still to check after updating, because the sources do not record it: that brew doctor no longer warns about the CLT, and that Deskflow reconnects on its own (01-deskflow.md).

Self-check

  1. Which macOS version did the Xcode 27.0 listing ask for?
    AnswermacOS 26.6 or later.
  2. The logbook says 15.3.1 and sw_vers says 27.0.1. Which one do you trust?
    Answer`sw_vers`: it is the current measurement; the logbook is from before the update.
  3. After updating, brew doctor complains about the Command Line Tools. What do you do?
    AnswerInstall the CLT update from Settings → General → Software Update.
Saved only in this browser.