Login items, apps and broken items

macOS

Three maintenance pages for the Mac: what starts when you sign in or when the Mac starts, what's installed, and entries that point at apps and files that are gone.

Heft doesn't need to run as administrator on a Mac. Anything that changes files outside your home folder, such as launch daemons and items installed for all users, asks for your administrator password when you do it, once for everything you chose. Each page says so before it asks.

On Windows, the Startup, Programs and Registry pages do the same jobs. See Startup, programs and registry.

Login items

The Login items page lists everything that starts when you sign in or when the Mac starts: your login items, and launch agents and daemons in ~/Library/LaunchAgents, /Library/LaunchAgents and /Library/LaunchDaemons. Each row shows the item, who signed it, the command it runs, whether it's running now, and how it starts: at login, at startup, kept running, on a schedule or on demand. Use Filter to find one.

Turning something off takes effect the next time you sign in or restart; nothing that's running is stopped. Removing a launch agent or daemon also stops it if it's running. Turning launch daemons on or off, and removing items installed for all users, asks for your administrator password.

Apps can also carry helpers inside them and switch them on themselves. These are listed under Background items inside apps for reference, with the ones that are active right now. Turn them on or off in System Settings › General › Login Items & Extensions; Open Login Items settings takes you there. Those switches are separate from Heft's: an item turned off there stays off.

Show all background items reads macOS's own list: everything System Settings shows under Login Items & Extensions, for every user on the Mac, with who made it and whether it's allowed to run in the background. Only an administrator can read that list, so it asks for your password. macOS doesn't let other apps switch these items, so use System Settings for that.

Heft reads your login items without asking for any permission. If that ever stops working, it offers to read them through System Events instead, which macOS asks you to allow the first time (System Settings › Privacy & Security › Automation).

Apps

The Apps page lists every app in Applications and ~/Applications, including apps in vendor folders such as Adobe Photoshop 2026, with the space it really takes on disk. A size with a ~ in front comes from Spotlight and is replaced once Heft has measured the app. Each row also shows the publisher from the app's code signature, when it was added and when it was last opened. Search by name, publisher or bundle ID, and sort by size, name, date added, least recently opened or publisher.

Apps that come with macOS aren't listed: they're part of the system and update with it.

To uninstall an app:

  1. Quit the app. Heft won't uninstall an app that's running; it says so and offers Check again.
  2. Press Uninstall. If the app comes with its own uninstaller, Heft offers Open its uninstaller, which can also remove the helpers and settings the app installed. If Homebrew installed it, Uninstall with Homebrew runs the cask's own uninstall steps in a Terminal window. Otherwise Heft moves the app to the Trash, and you can always choose Move to Trash instead. Apps installed for all users ask for your administrator password.
  3. Heft then checks ~/Library and /Library for settings, caches and other files the app left behind, and lists them.
  4. Tick what to remove and press Move to the Trash, or Keep everything.

Leftover suggestions never include anything another installed app uses. Only items named exactly after the app's bundle ID are ticked; items that just share the app's name are listed unticked, so you can check them first. Everything Heft moves, the app and its leftovers, shows up on the Removed tab and can be put back.

Leftovers of deleted apps

Apps dragged to the Trash, or removed long ago, leave their data behind in ~/Library. Leftovers of deleted apps lists it by app: an app's data container in ~/Library/Containers, and its caches, preferences, saved window state and other files named after the same bundle ID. This is often the biggest win on a Mac that's been in use for years.

Since there's no uninstall to go by, the rules are strict:

Nothing is ticked, so look at each one first. Without Full Disk Access, macOS doesn't let Heft measure other apps' data containers, so their size shows as size?, and it may refuse to move them.

The menu button on each row can Show in Finder, Show in disk map (scan the app on the Disk usage page), Copy path or Copy bundle ID.

Updating apps

Press Check for updates and Heft asks Homebrew, the Mac's counterpart of winget, which apps and command-line packages have newer versions. Each one gets an Update button, and Update all updates everything at once after asking. Packages you've pinned in Homebrew are left alone until you unpin them with brew unpin.

Updates run in a Terminal window so you can see what Homebrew does and answer its questions. Checking for and installing updates is the only time Heft uses the network.

Homebrew can only update what it installed. If Homebrew isn't on your Mac, the page says so and links to brew.sh. macOS updates in Software Update; the page has a shortcut to it.

App Store apps are included when the mas tool is installed (brew install mas): they're listed with the other updates, and Update runs mas upgrade in Terminal. Without it, the page has a shortcut to the App Store's Updates.

Apps that update themselves, with Sparkle (which many Mac apps use) or Squirrel (Electron apps), say updates itself, and their menu has Open to update. Heft doesn't go online for them unless you ask: turn on Also ask apps that update themselves in Settings (Cmd-,), and Check for updates also asks each Sparkle app's own update server, at the address inside the app, whether there's a newer version.

Broken items

Removing broken entries doesn't make a Mac faster, whatever anyone claims. The Broken items page is the Mac counterpart of the registry check: housekeeping, and deliberately narrow. Press Scan for issues to look for entries that point at apps and files that no longer exist:

Only the first three are ticked, because they have a visible effect: macOS stops trying to start something that isn't there, and the question marks leave the Dock. The rest are harmless clutter, listed for you to decide.

An entry only counts as broken when what it names is provably gone. Disks that aren't connected and folders Heft can't look in never count. Press Fix selected and Heft lists what will happen to each kind of entry before anything changes:

Press Back up and fix and Heft saves a backup, then makes the changes. Anything outside your home folder asks for your administrator password, once for all of them.

Backups

Everything Heft removes or changes on the Login items and Broken items pages is saved first in ~/Library/Application Support/Heft/backups. The Backups list at the bottom of the Broken items page shows them all. Press Restore… next to one to see what can be put back, then Restore, or Open folder to see the files. Items outside your home folder need your administrator password to restore, and launch agents and daemons load again the next time you sign in or restart.

The login items you turned off are remembered in login-items-off.plist, in ~/Library/Application Support/Heft, so Heft can add them back as they were.