Login items, apps and broken items
macOSThree 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.
- Turn an item off with its checkbox. For launch agents and daemons this uses launchd's own switch (
launchctl disable), so nothing is deleted and you can turn it back on any time. A login item is taken off the list, but Heft remembers it, so ticking it again adds it back as it was. - Remove an item for good with the bin button. Heft saves a backup first. Your own launch agents go to the Trash, and ones in
/Libraryare deleted after the backup, which asks for your administrator password. Removing a login item doesn't touch the app itself.
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:
- Quit the app. Heft won't uninstall an app that's running; it says so and offers Check again.
- 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.
- Heft then checks
~/Libraryand/Libraryfor settings, caches and other files the app left behind, and lists them. - 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:
- A bundle ID only counts as an app's when it has a data container or saved window state, or macOS still remembers an app with that ID whose bundle is gone.
- It's only listed when no app on the Mac has that ID or belongs to it: not the apps macOS knows anywhere (including on disks that aren't connected), not the extensions and helpers inside them, and nothing that's running.
- Items are only matched by bundle ID, never by name, and Apple's own and shared group containers are never listed.
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:
- launch agents and daemons whose program is gone (macOS tries and fails to start them at every login or startup);
- login items whose app is gone;
- Dock icons for apps and folders that are gone, which the Dock shows with a question mark (an app that was only moved still counts as there, since the Dock follows it);
- command-line links in
/usr/local/bin,~/.local/binand~/binwhose target is gone (links that Homebrew, MacPorts or Nix manage are left to them); - "Open With" entries for apps that are no longer there;
- package receipts for software whose files are all gone.
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:
- launch agents and daemons are stopped if they're loaded, and their
.plistgoes to the Trash (or is deleted, for ones in/Library); - login items are taken off the list;
- Dock icons are taken out of the Dock, which then restarts;
- links are deleted;
- Open With entries are unregistered from Launch Services;
- package receipts are forgotten with
pkgutil, and no installed files are touched.
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.