The main reason is that sbt needs to resolve conflicts. Not only this, but ivy often needs to resolve all -SNAPSHOT dependencies to ensure its current information. This is because by default sbt uses the "last" conflict resolution manager, rather than the "closest" used by maven. This, in my experience, leads to fewer issues with artifact versions. However, this means, as Mark points out, that he recreates the entire depot tree.
All permissions in sbt are delegated to ivy. To make it more intelligent, you will have to create hooks for Ivy or otherwise replace the dependency management library used by sbt. In this case, permissions, I think, the only thing that can be done is to improve the cache in order to reduce the time taken to restore the previous information about caching the artifact.
source share