Where Does sbt Store Global Settings?
sbt's global .sbt tree, boot and Ivy caches, and the coursier artifact location.
Last updated
sbt keeps cross project state in ~/.sbt with versioned subfolders. global.sbt applies to every build, plugins/ hosts global plugins, and boot/ holds the launcher resolved Scala toolchain.
Artifact caches fan out further. Ivy uses ~/.ivy2, coursier uses its own default cache, and both are overridable for CI machines that must pin cache paths between runs.
Where sbt stores this, by platform
%USERPROFILE%\.sbt\1.0\global.sbt
Global settings file. Home ~ maps to %USERPROFILE%. Boot at .sbt/boot, Ivy at .ivy2. Override with -Dsbt.global.base, -Dsbt.boot.directory, -Dsbt.ivy.home or -sbt-dir.
~/.sbt/1.0/global.sbt
Same layout. Global plugins in 1.0/plugins with build.sbt addSbtPlugin lines. Check coursier cache via the csrCacheDirectory command when disk runs hot.
~/.sbt/1.0/global.sbt
Same layout. CI setups should set sbt.boot.directory and sbt.coursier.home explicitly so caches survive between ephemeral runners.
Frequently asked questions
How do I add an sbt plugin to every project?
Declare it in ~/.sbt/1.0/plugins/build.sbt with addSbtPlugin, then reference its settings with fully qualified names in global.sbt.
What eats disk in sbt home?
Usually boot plus coursier and Ivy caches, not your settings. Clear caches per tool docs rather than deleting .sbt wholesale, which also removes global config.
Notice an outdated path? Let us know.