diff --git a/cmd/loki/loki-local-config.yaml b/cmd/loki/loki-local-config.yaml
index a3092d89ad0492655c1957baa1370e25b50326c6..24d7a8344a5286d418473cecbe6f0495469fb398 100644
--- a/cmd/loki/loki-local-config.yaml
+++ b/cmd/loki/loki-local-config.yaml
@@ -27,3 +27,6 @@ storage_config:
 
   filesystem:
     directory: /tmp/loki/chunks
+
+limits_config:
+  enforce_metric_name: false
diff --git a/cmd/loki/main.go b/cmd/loki/main.go
index 0769a3ec36deed05cd20d6fa6b96054865edb218..da010c9b34f48718987d3e3b87962a1518a14416 100644
--- a/cmd/loki/main.go
+++ b/cmd/loki/main.go
@@ -14,6 +14,7 @@ import (
 
 	"github.com/cortexproject/cortex/pkg/util"
 	"github.com/cortexproject/cortex/pkg/util/flagext"
+	"github.com/cortexproject/cortex/pkg/util/validation"
 )
 
 func init() {
@@ -29,8 +30,14 @@ func main() {
 	flagext.RegisterFlags(&cfg)
 	flag.Parse()
 
-	// The flags set the EnforceMetricName to be true, but in loki it _should_ be false.
-	cfg.LimitsConfig.EnforceMetricName = false
+	// LimitsConfig has a customer UnmarshalYAML that will set the defaults to a global.
+	// This global is set to the config passed into the last call to `NewOverrides`. If we don't
+	// call it atleast once, the defaults are set to an empty struct.
+	// We call it with the flag values so that the config file unmarshalling only overrides the values set in the config.
+	if _, err := validation.NewOverrides(cfg.LimitsConfig); err != nil {
+		level.Error(util.Logger).Log("msg", "error loading limits", "err", err)
+		os.Exit(1)
+	}
 
 	util.InitLogger(&cfg.Server)
 
diff --git a/production/helm/loki/values.yaml b/production/helm/loki/values.yaml
index a03ca21f51c21ac23f95a9fa1832a348d106be7d..560a374062f7db2b88fab4e907f780065967f425 100644
--- a/production/helm/loki/values.yaml
+++ b/production/helm/loki/values.yaml
@@ -37,6 +37,8 @@ config:
       #     prefix: ""
       #     httpclienttimeout: "20s"
       #     consistentreads: true
+  limits_config:
+    enforce_metric_name: false
   schema_config:
     configs:
     - from: 0
diff --git a/production/ksonnet/loki/config.libsonnet b/production/ksonnet/loki/config.libsonnet
index f81b0e72d35580fde1fc1cf9a8b476e3004a980e..80eb6328009d1c331b48a8ea1a7ecc3489e9c1c4 100644
--- a/production/ksonnet/loki/config.libsonnet
+++ b/production/ksonnet/loki/config.libsonnet
@@ -29,6 +29,10 @@
         grpc_server_max_recv_msg_size: 1024 * 1024 * 64,
       },
 
+      limits_config: {
+        enforce_metric_name: false,
+      },
+
       ingester: {
         chunk_idle_period: '15m',