diff --git a/libkbfs/config_local.go b/libkbfs/config_local.go
index <HASH>..<HASH> 100644
--- a/libkbfs/config_local.go
+++ b/libkbfs/config_local.go
@@ -1221,6 +1221,10 @@ func (c *ConfigLocal) Shutdown(ctx context.Context) error {
 	if dbc != nil {
 		dbc.Shutdown(ctx)
 	}
+	dmc := c.DiskMDCache()
+	if dmc != nil {
+		dmc.Shutdown(ctx)
+	}
 	kbfsServ := c.kbfsService
 	if kbfsServ != nil {
 		kbfsServ.Shutdown()
diff --git a/libkbfs/disk_md_cache.go b/libkbfs/disk_md_cache.go
index <HASH>..<HASH> 100644
--- a/libkbfs/disk_md_cache.go
+++ b/libkbfs/disk_md_cache.go
@@ -470,6 +470,7 @@ func (cache *DiskMDCacheLocal) Shutdown(ctx context.Context) {
 	select {
 	case <-cache.shutdownCh:
 		cache.log.CWarningf(ctx, "Shutdown called more than once")
+		return
 	default:
 	}
 	close(cache.shutdownCh)
config_local: shutdown disk md cache

Otherwise each singleop git operation will leave one open.