diff --git a/cloud/bmaas/bmdb/webug/views.go b/cloud/bmaas/bmdb/webug/views.go
index 0cf34ac..7c43054 100644
--- a/cloud/bmaas/bmdb/webug/views.go
+++ b/cloud/bmaas/bmdb/webug/views.go
@@ -37,7 +37,7 @@
 // viewMachines renders a list of all machines in the BMDB.
 func (s *server) viewMachines(w http.ResponseWriter, r *http.Request, args ...string) {
 	start := time.Now()
-	res, err := s.curSchema().GetMachines(r.Context(), &reflection.GetMachinesOpts{Strict: true})
+	res, err := s.curSchema().GetMachines(r.Context(), &reflection.GetMachinesOpts{Strict: s.strictConsistency})
 	if err != nil {
 		w.WriteHeader(http.StatusInternalServerError)
 		fmt.Fprintf(w, "could not dump BMDB: %v", err)
@@ -84,7 +84,7 @@
 
 	opts := reflection.GetMachinesOpts{
 		FilterMachine:   &mid,
-		Strict:          true,
+		Strict:          s.strictConsistency,
 		ExpiredBackoffs: true,
 	}
 	res, err := s.curSchema().GetMachines(r.Context(), &opts)
diff --git a/cloud/bmaas/bmdb/webug/webug.go b/cloud/bmaas/bmdb/webug/webug.go
index b377499..e6e1be7 100644
--- a/cloud/bmaas/bmdb/webug/webug.go
+++ b/cloud/bmaas/bmdb/webug/webug.go
@@ -36,6 +36,11 @@
 	schema *reflection.Schema
 	// muSchema locks schema for updates.
 	muSchema sync.RWMutex
+	// strictConsistency, when enabled, makes webug render its views with the 
+	// freshest available data, potentially conflicting with online 
+	// transactions. This should only be enabled during testing, as it tends to 
+	// clog up the database query planner and make everything slow.
+	strictConsistency bool
 }
 
 // curSchema returns the current cached BMDB schema.
@@ -101,14 +106,15 @@
 // This is a low-level function useful when tying webug into an existing web
 // application. If you just want to run webug on a separate port that's
 // configured by flags, use Config and Config.RegisterFlags.
-func Register(ctx context.Context, conn *bmdb.Connection, mux *http.ServeMux) error {
+func Register(ctx context.Context, conn *bmdb.Connection, mux *http.ServeMux, enableStrictConsistency bool) error {
 	schema, err := conn.Reflect(ctx)
 	if err != nil {
 		return fmt.Errorf("could not get BMDB schema for webug: %w", err)
 	}
 	s := server{
-		conn:   conn,
-		schema: schema,
+		conn:              conn,
+		schema:            schema,
+		strictConsistency: enableStrictConsistency,
 	}
 	go s.schemaWorker(ctx)
 
@@ -147,11 +153,15 @@
 type Config struct {
 	// If set, start a webug interface on an HTTP listener bound to the given address.
 	WebugListenAddress string
+
+	// Enables strict consistency
+	WebugDBFetchStrict bool
 }
 
 // RegisterFlags for webug interface.
 func (c *Config) RegisterFlags() {
 	flag.StringVar(&c.WebugListenAddress, "webug_listen_address", "", "Address to start BMDB webug on. If not set, webug will not be started.")
+	flag.BoolVar(&c.WebugDBFetchStrict, "webug_dbfetch_strict", false, "Enables strict consistency")
 }
 
 // Start the webug interface in the foreground if enabled. The returned error
@@ -165,7 +175,7 @@
 		return nil
 	}
 	mux := http.NewServeMux()
-	if err := Register(ctx, conn, mux); err != nil {
+	if err := Register(ctx, conn, mux, c.WebugDBFetchStrict); err != nil {
 		return err
 	}
 
