diff --git a/status/build_docker_release b/status/build_docker_release
index bea978b..46f6d29 100755
--- a/status/build_docker_release
+++ b/status/build_docker_release
@@ -17,7 +17,6 @@
 ${INSTALL} --mode=644 -T ./templates/header.html      ${ROOT}/usr/local/share/status/templates/header.html
 ${INSTALL} --mode=644 -T ./templates/commits.html     ${ROOT}/usr/local/share/status/templates/commits.html
 ${INSTALL} --mode=644 -T ./templates/capacity.html    ${ROOT}/usr/local/share/status/templates/capacity.html
-${INSTALL} --mode=644 -T ../infra/config/recipes.cfg  ${ROOT}/usr/local/share/status/recipes.cfg
 }
 
 source ../bash/docker_build.sh
diff --git a/status/go/status/main.go b/status/go/status/main.go
index d72871a..d3dff37 100644
--- a/status/go/status/main.go
+++ b/status/go/status/main.go
@@ -100,7 +100,6 @@
 	swarmingUrl                 = flag.String("swarming_url", "https://chromium-swarm.appspot.com", "URL of the Swarming server.")
 	taskSchedulerUrl            = flag.String("task_scheduler_url", "https://task-scheduler.skia.org", "URL of the Task Scheduler server.")
 	testing                     = flag.Bool("testing", false, "Set to true for locally testing rules. No email will be sent.")
-	useMetadata                 = flag.Bool("use_metadata", true, "Load sensitive values from metadata not from flags.")
 	workdir                     = flag.String("workdir", ".", "Directory to use for scratch work.")
 	pubsubTopicSet              = flag.String("pubsub_topic_set", "", fmt.Sprintf("Pubsub topic set; one of: %v", pubsub.VALID_TOPIC_SETS))
 
@@ -705,9 +704,6 @@
 	skiaversion.MustLogVersion()
 
 	Init()
-	if *testing {
-		*useMetadata = false
-	}
 	serverURL := "https://" + *host
 	if *testing {
 		serverURL = "http://" + *host + *port
@@ -732,7 +728,7 @@
 	label := *host
 	mod, err := pubsub.NewModifiedData(*pubsubTopicSet, label, ts)
 	if err != nil {
-		sklog.Fatal(err)
+		sklog.Fatalf("Failed to initialize pubsub: %s", err)
 	}
 	taskDb, err = firestore.NewDB(ctx, firestore.FIRESTORE_PROJECT, *firestoreInstance, ts, mod)
 	if err != nil {
@@ -759,7 +755,7 @@
 	sklog.Info("Checkout complete")
 
 	// Cache for buildProgressHandler.
-	tasksPerCommit, err = newTasksPerCommitCache(ctx, *workdir, *repoUrls, 14*24*time.Hour, *btProject, *btInstance, ts)
+	tasksPerCommit, err = newTasksPerCommitCache(ctx, repos, 14*24*time.Hour, *btProject, *btInstance, ts)
 	if err != nil {
 		sklog.Fatalf("Failed to create tasksPerCommitCache: %s", err)
 	}
diff --git a/status/go/status/tasks_per_commit.go b/status/go/status/tasks_per_commit.go
index 909a359..8566973 100644
--- a/status/go/status/tasks_per_commit.go
+++ b/status/go/status/tasks_per_commit.go
@@ -3,8 +3,6 @@
 import (
 	"context"
 	"fmt"
-	"os"
-	"path"
 	"sync"
 	"time"
 
@@ -27,21 +25,7 @@
 }
 
 // newTasksPerCommitCache returns a tasksPerCommitCache instance.
-func newTasksPerCommitCache(ctx context.Context, workdir string, repoUrls []string, period time.Duration, btProject, btInstance string, ts oauth2.TokenSource) (*tasksPerCommitCache, error) {
-	wd := path.Join(workdir, "tasksPerCommitCache")
-	if _, err := os.Stat(wd); err != nil {
-		if os.IsNotExist(err) {
-			if err := os.Mkdir(wd, os.ModePerm); err != nil {
-				return nil, err
-			}
-		} else {
-			return nil, fmt.Errorf("There is a problem with the workdir: %s", err)
-		}
-	}
-	repos, err := repograph.NewMap(ctx, repoUrls, wd)
-	if err != nil {
-		return nil, err
-	}
+func newTasksPerCommitCache(ctx context.Context, repos repograph.Map, period time.Duration, btProject, btInstance string, ts oauth2.TokenSource) (*tasksPerCommitCache, error) {
 	tcc, err := task_cfg_cache.NewTaskCfgCache(ctx, repos, btProject, btInstance, ts)
 	if err != nil {
 		return nil, err
@@ -101,9 +85,6 @@
 
 // update pulls down new commits and evicts old entries from the cache.
 func (c *tasksPerCommitCache) update(ctx context.Context) error {
-	if err := c.repos.Update(ctx); err != nil {
-		return err
-	}
 	c.mtx.Lock()
 	defer c.mtx.Unlock()
 	start := time.Now().Add(-c.period)
diff --git a/status/go/statusk/main.go b/status/go/statusk/main.go
index ef551d7..457f91c 100644
--- a/status/go/statusk/main.go
+++ b/status/go/statusk/main.go
@@ -22,6 +22,7 @@
 	"unicode"
 
 	"cloud.google.com/go/bigtable"
+	"cloud.google.com/go/datastore"
 	"github.com/gorilla/mux"
 	"go.skia.org/infra/go/allowed"
 	"go.skia.org/infra/go/auth"
@@ -101,14 +102,12 @@
 	host                        = flag.String("host", "localhost", "HTTP service host")
 	port                        = flag.String("port", ":8002", "HTTP service port (e.g., ':8002')")
 	promPort                    = flag.String("prom_port", ":20000", "Metrics service address (e.g., ':10110')")
-	recipesCfgFile              = flag.String("recipes_cfg", "", "Path to the recipes.cfg file.")
 	repoUrls                    = common.NewMultiStringFlag("repo", nil, "Repositories to query for status.")
 	resourcesDir                = flag.String("resources_dir", "", "The directory to find templates, JS, and CSS files. If blank the current directory will be used.")
 	chromeInfraAuthJWT          = flag.String("service_account_jwt", "/var/secrets/skia-public-auth/key.json", "The JWT key for the service account that has access to chrome infra auth.")
 	swarmingUrl                 = flag.String("swarming_url", "https://chromium-swarm.appspot.com", "URL of the Swarming server.")
 	taskSchedulerUrl            = flag.String("task_scheduler_url", "https://task-scheduler.skia.org", "URL of the Task Scheduler server.")
 	testing                     = flag.Bool("testing", false, "Set to true for locally testing rules. No email will be sent.")
-	useMetadata                 = flag.Bool("use_metadata", true, "Load sensitive values from metadata not from flags.")
 	workdir                     = flag.String("workdir", ".", "Directory to use for scratch work.")
 	pubsubTopicSet              = flag.String("pubsub_topic_set", "", fmt.Sprintf("Pubsub topic set; one of: %v", pubsub.VALID_TOPIC_SETS))
 
@@ -692,16 +691,13 @@
 	skiaversion.MustLogVersion()
 
 	Init()
-	if *testing {
-		*useMetadata = false
-	}
 	serverURL := "https://" + *host
 	if *testing {
 		serverURL = "http://" + *host + *port
 	}
 	ctx := context.Background()
 
-	ts, err := auth.NewDefaultTokenSource(false, auth.SCOPE_USERINFO_EMAIL, auth.SCOPE_GERRIT, bigtable.Scope, pubsub.AUTH_SCOPE)
+	ts, err := auth.NewDefaultTokenSource(*testing, auth.SCOPE_USERINFO_EMAIL, auth.SCOPE_GERRIT, bigtable.Scope, pubsub.AUTH_SCOPE, datastore.ScopeDatastore)
 	if err != nil {
 		sklog.Fatal(err)
 	}
@@ -725,7 +721,7 @@
 	label := *host
 	mod, err := pubsub.NewModifiedData(*pubsubTopicSet, label, ts)
 	if err != nil {
-		sklog.Fatal(err)
+		sklog.Fatalf("Failed to initialize pubsub: %s", err)
 	}
 	taskDb, err = firestore.NewDB(ctx, firestore.FIRESTORE_PROJECT, *firestoreInstance, ts, mod)
 	if err != nil {
@@ -753,7 +749,7 @@
 		sklog.Fatalf("Failed to create repos dir: %s", err)
 	}
 	if *repoUrls == nil {
-		*repoUrls = common.PUBLIC_REPOS
+		sklog.Fatal("At least one --repo is required.")
 	}
 	repos, err = repograph.NewMap(ctx, *repoUrls, reposDir)
 	if err != nil {
@@ -765,7 +761,7 @@
 	sklog.Info("Checkout complete")
 
 	// Cache for buildProgressHandler.
-	tasksPerCommit, err = newTasksPerCommitCache(ctx, *workdir, *recipesCfgFile, repos, 14*24*time.Hour, *btProject, *btInstance, ts)
+	tasksPerCommit, err = newTasksPerCommitCache(ctx, repos, 14*24*time.Hour, *btProject, *btInstance, ts)
 	if err != nil {
 		sklog.Fatalf("Failed to create tasksPerCommitCache: %s", err)
 	}
@@ -839,11 +835,12 @@
 	})
 
 	// Create the TaskDriver DB.
-	taskDriverDb, err = bigtable_db.NewBigTableDB(ctx, *btProject, *btInstance, ts)
+	taskDriverBtInstance := "staging" // Task Drivers aren't in prod yet.
+	taskDriverDb, err = bigtable_db.NewBigTableDB(ctx, *btProject, taskDriverBtInstance, ts)
 	if err != nil {
 		sklog.Fatal(err)
 	}
-	taskDriverLogs, err = logs.NewLogsManager(ctx, *btProject, *btInstance, ts)
+	taskDriverLogs, err = logs.NewLogsManager(ctx, *btProject, taskDriverBtInstance, ts)
 	if err != nil {
 		sklog.Fatal(err)
 	}
diff --git a/status/go/statusk/tasks_per_commit.go b/status/go/statusk/tasks_per_commit.go
index a6d3bce..8566973 100644
--- a/status/go/statusk/tasks_per_commit.go
+++ b/status/go/statusk/tasks_per_commit.go
@@ -3,8 +3,6 @@
 import (
 	"context"
 	"fmt"
-	"os"
-	"path"
 	"sync"
 	"time"
 
@@ -27,17 +25,7 @@
 }
 
 // newTasksPerCommitCache returns a tasksPerCommitCache instance.
-func newTasksPerCommitCache(ctx context.Context, workdir, recipesCfgFile string, repos repograph.Map, period time.Duration, btProject, btInstance string, ts oauth2.TokenSource) (*tasksPerCommitCache, error) {
-	wd := path.Join(workdir, "tasksPerCommitCache")
-	if _, err := os.Stat(wd); err != nil {
-		if os.IsNotExist(err) {
-			if err := os.Mkdir(wd, os.ModePerm); err != nil {
-				return nil, err
-			}
-		} else {
-			return nil, fmt.Errorf("There is a problem with the workdir: %s", err)
-		}
-	}
+func newTasksPerCommitCache(ctx context.Context, repos repograph.Map, period time.Duration, btProject, btInstance string, ts oauth2.TokenSource) (*tasksPerCommitCache, error) {
 	tcc, err := task_cfg_cache.NewTaskCfgCache(ctx, repos, btProject, btInstance, ts)
 	if err != nil {
 		return nil, err
diff --git a/status/sys/status-internal.service b/status/sys/status-internal.service
index 78e4b7d..0e201df 100644
--- a/status/sys/status-internal.service
+++ b/status/sys/status-internal.service
@@ -10,7 +10,6 @@
     --bigtable_instance=internal \
     --logtostderr \
     --workdir=/mnt/pd0/status_workdir \
-    --use_metadata=true \
     --host=status-internal.skia.org \
     --resources_dir=/usr/local/share/status \
     --capacity_recalculate_interval=30m \
diff --git a/status/sys/status-staging.service b/status/sys/status-staging.service
index 94cf735..5c5e902 100644
--- a/status/sys/status-staging.service
+++ b/status/sys/status-staging.service
@@ -10,7 +10,6 @@
     --bigtable_instance=staging \
     --logtostderr \
     --workdir=/mnt/pd0/status_workdir \
-    --use_metadata=true \
     --host=status-staging.skia.org \
     --resources_dir=/usr/local/share/status \
     --capacity_recalculate_interval=30m \
diff --git a/status/sys/statusd.service b/status/sys/statusd.service
index 92d2e87..1cd2baf 100644
--- a/status/sys/statusd.service
+++ b/status/sys/statusd.service
@@ -10,7 +10,6 @@
     --bigtable_instance=production \
     --logtostderr \
     --workdir=/mnt/pd0/status_workdir \
-    --use_metadata=true \
     --host=status.skia.org \
     --resources_dir=/usr/local/share/status \
     --capacity_recalculate_interval=30m \
diff --git a/task_scheduler/go/db/pubsub/pubsub.go b/task_scheduler/go/db/pubsub/pubsub.go
index a6dceda..d475e10 100644
--- a/task_scheduler/go/db/pubsub/pubsub.go
+++ b/task_scheduler/go/db/pubsub/pubsub.go
@@ -4,6 +4,7 @@
 	"bytes"
 	"context"
 	"encoding/gob"
+	"fmt"
 	"sync"
 	"time"
 
@@ -109,11 +110,11 @@
 	t := c.Topic(topic)
 	exists, err := t.Exists(context.Background())
 	if err != nil {
-		return nil, err
+		return nil, fmt.Errorf("Failed to check for topic %q existence: %s", topic, err)
 	}
 	if !exists {
 		if _, err := c.CreateTopic(context.Background(), topic); err != nil {
-			return nil, err
+			return nil, fmt.Errorf("Failed to create topic: %s", err)
 		}
 	}
 	p := &publisher{
@@ -356,7 +357,7 @@
 	}()
 	err := <-errCh
 	if err != nil {
-		return nil, err
+		return nil, fmt.Errorf("Failed to create subscription: %s", err)
 	}
 	return func() {
 		cancelFn()
