diff --git a/core/lib/Drupal/Core/Template/TwigFactory.php b/core/lib/Drupal/Core/Template/TwigFactory.php
index 9052359566396a913f72adc8551e1b31f6e4fcc4..6254637e968465e9533db6366c1580e4fe4a92ee 100644
--- a/core/lib/Drupal/Core/Template/TwigFactory.php
+++ b/core/lib/Drupal/Core/Template/TwigFactory.php
@@ -44,6 +44,7 @@ class TwigFactory {
   public static function get() {
     // @todo Maybe we will have our own loader later.
     $loader = new \Twig_Loader_Filesystem(DRUPAL_ROOT);
+    $config = config('system.twig');
     $twig = new TwigEnvironment($loader, array(
         // This is saved / loaded via drupal_php_storage().
         // All files can be refreshed by clearing caches.
@@ -57,9 +58,10 @@ public static function get() {
         // @see http://drupal.org/node/1806538.
         'strict_variables' => FALSE,
         // @todo Maybe make debug mode dependent on "production mode" setting.
-        'debug' => TRUE,
+        'debug' => $config->get('twig.debug.enabled') ? TRUE : FALSE,
         // @todo Make auto reload mode dependent on "production mode" setting.
-        'auto_reload' => TRUE,
+        // @see http://drupal.org/node/1843034
+        'auto_reload' => $config->get('twig.autorefresh.enabled') ? TRUE : FALSE,
     ));
 
     // The node visitor is needed to wrap all variables with
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index 18d521e7aed13aec329ede11751f5d0b07e0b253..e73c77ef9f7c81472745d189195223d0c3919fea 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -1594,6 +1594,65 @@ function system_logging_settings_submit($form, &$form_state) {
  * @ingroup forms
  * @see system_performance_settings_submit().
  */
+function system_twig_settings($form, &$form_state) {
+  drupal_add_library('system', 'drupal.system');
+  $config = config('system.twig');
+
+  $form['twig'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Twig'),
+    '#description' => t('Provide Twig specific development switches.  Not recommended for use in production!'),
+  );
+
+  $form['twig']['debug'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Turn twig debugging on'),
+    '#default_value' => $config->get('twig.debug.enabled'),
+    '#description' => t('When enabled, the generated templates have a __toString() method that you can use to display the generated nodes'),
+    '#weight' => -2,
+  );
+
+  $form['twig']['debug_verbose'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Turn verbose twig debugging on'),
+    '#default_value' => $config->get('twig.debug_verbose.enabled'),
+    '#description' => t('Similar to the debug switch, but gives even more output information'),
+    '#weight' => -2,
+  );
+
+  $form['twig']['autorefresh'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Enable twig autorefesh'),
+    '#default_value' => $config->get('twig.autorefresh.enabled'),
+    '#description' => t('When developing with Twig, it is useful to recompile the template whenever the source code changes.'),
+    '#weight' => -2,
+  );
+
+  $form['#submit'][] = 'system_clear_page_cache_submit';
+  $form['#submit'][] = 'system_twig_settings_submit';
+
+  return system_config_form($form, $form_state);
+}
+
+/**
+ * Form submission handler for system_twig_settings_submit().
+ *
+ * @ingroup forms
+ */
+function system_twig_settings_submit($form, &$form_state) {
+  $config = config('system.twig');
+  $config->set('twig.debug.enabled', $form_state['values']['debug']);
+  $config->set('twig.debug_verbose.enabled', $form_state['values']['debug_verbose']);
+  $config->set('twig.autorefresh.enabled', $form_state['values']['autorefresh']);
+  $config->save();
+}
+
+/**
+ * Form builder; Configure site performance settings.
+ *
+ * @ingroup forms
+ * @see system_performance_settings_submit().
+ */
 function system_performance_settings($form, &$form_state) {
   drupal_add_library('system', 'drupal.system');
   $config = config('system.performance');
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 86fb4f474105e8a929bd5941258e1bcface5cf99..d52444b0b97cb684980e8baf8b2c2d539c257d4f 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -898,7 +898,15 @@ function system_menu() {
     'file' => 'system.admin.inc',
     'weight' => -15,
   );
-
+  $items['admin/config/development/twig'] = array(
+    'title' => 'Twig',
+    'description' => 'Enable or disable twig debugging and autoreload functionality.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('system_twig_settings'),
+    'access arguments' => array('administer site configuration'),
+    'file' => 'system.admin.inc',
+    'weight' => -20,
+  );
   // Regional and date settings.
   $items['admin/config/regional'] = array(
     'title' => 'Regional and language',
diff --git a/core/themes/engines/twig/twig.engine b/core/themes/engines/twig/twig.engine
index 74d66a80171ed66095ce18f932a5af2bd927d8fa..7ffaec2f19b166e0a5fc02076c6390a5a49fdf76 100644
--- a/core/themes/engines/twig/twig.engine
+++ b/core/themes/engines/twig/twig.engine
@@ -45,6 +45,7 @@ function twig_init($template) {
  *   The output generated by the template.
  */
 function twig_render_template($template_file, $variables) {
+  $config = config('system.twig');
   $variables['_references']=array();
   $suggestion = '';
   if (isset($variables['theme_hook_suggestions'])) {
@@ -52,9 +53,17 @@ function twig_render_template($template_file, $variables) {
     foreach ($suggestions as $key => $val) {
       $suggestions[$key] = '* ' . str_replace('_', '-', $val) . '.html.twig';
     }
-    $suggestion = '<!-- SUGGESTIONS: ' . "\n" . implode("\n", $suggestions) . "\n" . ' -->' . "\n";
+    if ($config->get('twig.debug_verbose.enabled')) {
+      $suggestion = '<!-- SUGGESTIONS: ' . "\n" . implode("\n", $suggestions) . "\n" . ' -->' . "\n";
+    }
+  }
+  $call_debug = '';
+  $end_debug = '';
+  if ($config->get('twig.debug_verbose.enabled')) {
+    $call_debug = '<!-- CALL: ' . $variables['theme_hook_original'] . ' | START: ' . $template_file . ' -->';
+    $end_debug = '<!-- END: ' . $template_file . ' -->';
   }
-  return '<!-- CALL: ' . $variables['theme_hook_original'] . ' | START: ' . $template_file . ' -->' . $suggestion . drupal_container()->get('twig')->loadTemplate($template_file)->render($variables) . '<!-- END: ' . $template_file . ' -->';
+  return $call_debug . $suggestion . drupal_container()->get('twig')->loadTemplate($template_file)->render($variables) . $end_debug;
 }
 
 /**
