diff --git a/core/lib/Drupal/Core/Config/Config.php b/core/lib/Drupal/Core/Config/Config.php
index 19899a5..cf31d66 100644
--- a/core/lib/Drupal/Core/Config/Config.php
+++ b/core/lib/Drupal/Core/Config/Config.php
@@ -215,6 +215,12 @@ public function save() {
         $this->data[$key] = $this->castValue($key, $value);
       }
     }
+    // @todo Why are these schema not recognized during installation?
+    elseif (!in_array($this->name, array('system.module'))) {
+      throw new ConfigException(format_string('Configuration file @name cannot be saved due to lack of schema.', array(
+        '@name' => $this->name,
+      )));
+    }
 
     $this->storage->write($this->name, $this->data);
     $this->isNew = FALSE;
diff --git a/core/modules/system/config/schema/system.schema.yml b/core/modules/system/config/schema/system.schema.yml
index 3a14c5c..a4e1d60 100644
--- a/core/modules/system/config/schema/system.schema.yml
+++ b/core/modules/system/config/schema/system.schema.yml
@@ -341,6 +341,37 @@ system.action.*:
       type: config_dependencies
       label: 'Dependencies'
 
+system.action.*.*:
+  type: mapping
+  label: 'System action'
+  mapping:
+    id:
+      type: string
+      label: 'ID'
+    uuid:
+      type: string
+      label: 'UUID'
+    label:
+      type: label
+      label: 'Label'
+    status:
+      type: boolean
+      label: 'Status'
+    langcode:
+      type: string
+      label: 'Default language'
+    type:
+      type: string
+      label: 'Type'
+    plugin:
+      type: string
+      label: 'Plugin'
+    configuration:
+      type: action.configuration.[plugin]
+    dependencies:
+      type: config_dependencies
+      label: 'Dependencies'
+
 system.file:
   type: mapping
   label: 'File system'
