diff --git a/plugins/access/nid.inc b/plugins/access/nid.inc
new file mode 100644
index 0000000..479cd1b
--- /dev/null
+++ b/plugins/access/nid.inc
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * @file
+ * Plugin to provide access control based upon a parent term.
+ */
+
+/**
+ * Plugins are described by creating a $plugin array which will be used
+ * by the system that includes this file.
+ */
+$plugin = array(
+  'title' => t("Node: nid"),
+  'description' => t('Control access by node ID.'),
+  'callback' => 'ctools_nid_ctools_access_check',
+  'default' => array('negate' => 1, 'nid' => NULL),
+  'settings form' => 'ctools_nid_ctools_access_settings',
+  'settings form validation' => 'ctools_nid_ctools_access_settings_validate',
+  'settings form submit' => 'ctools_nid_ctools_access_settings_submit',
+  'summary' => 'ctools_nid_ctools_access_summary',
+);
+
+/**
+ * Settings form for the 'by parent term' access plugin
+ */
+function ctools_nid_ctools_access_settings($form, &$form_state, $conf) {
+  // If no configuration was saved before, set some defaults.
+  if (empty($conf)) {
+    $conf = array(
+      'nid' => 0,
+    );
+  }
+  if (!isset($conf['nid'])) {
+    $conf['nid'] = 0;
+  }
+
+  $form['settings']['nid'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Node ID:'),
+    '#default_value' => ($conf['nid']) ? $conf['nid'] : '',
+  );
+
+  return $form;
+}
+
+/**
+ * Check for node type and book location.
+ */
+function ctools_nid_ctools_access_check($conf, $context) {
+  // Get the node.
+  if (arg(0) == 'node' && is_numeric(arg(1)) && !arg(2)) {
+    $nid = arg(1);
+    if ($nid == $conf['nid']) {
+      return TRUE;
+    }
+  }
+
+  return FALSE;
+}
+
+/**
+ * Provide a summary description based upon the checked terms.
+ */
+function ctools_nid_ctools_access_summary($conf, $context) {
+  return t('Node ID is !nid', array('!nid' => $conf['nid']));
+}
