Debugging panels visibility rule with custom access check plugin I created a ctools access plugin for use with visibility rules in panels. When I click to add the rule, my rule "Site Installation Profile" shows in the list. I click it and click continue and my form for input of the profile name shows. I enter the name and click save only to get an AJAX error message that says the service is unavailable. If I cancel and try to edit the content of the panel, I get an error page. The error page simply says "Error" with no stack trace information. I've put in break points in my access plugin to try to debug with xdebug but it's not catching anywhere where the error is occurring and I'm not sure where to look.
Here is the plugin:

$plugin = array(
  'title' =&gt; t('Site Installation Profile'),
  'description' =&gt; t('Installation profile value check'),
  'callback' =&gt; 'llnl_form_alterations_site_profile_ctools_access_check',
  'default' =&gt; array(
    'profile' =&gt; '',
    'negate' =&gt; 0,
  ),
  'settings form' =&gt; 'llnl_form_alterations_site_profile_ctools_access_settings',
  'summary' =&gt; 'llnl_form_alterations_site_profile_ctools_access_summary',
  'all contexts' =&gt; TRUE,
);

/**
 * Actual access check.
 */
function llnl_form_alterations_site_profile_ctools_access_check($conf, $context) {
  $profile_ck = $conf['profile'];
  $profile = drupal_get_profile();
  if ($profile == $profile_ck) {
    return TRUE;
  }
  else {
    return FALSE;
  }
}

/**
 * Provide a config form.
 */
function llnl_form_alterations_site_profile_ctools_access_settings($form, &amp;$form_state, $conf) {
  $form['settings']['profile'] = array(
    '#type' =&gt; 'textfield',
    '#title' =&gt; t('Installation Profile'),
    '#default_value' =&gt; $conf['profile'],
    '#required' =&gt; TRUE,
  );
  return $form;
}

/**
 * Provide a summary description.
 */
function llnl_form_alterations_site_profile_ctools_access_summary($conf, $context) {
  $profile = $conf['profile'];
  return t('Show if "@profile" is site installation profile', $profile);
}
I found it within a few minutes of posting this question. The issue was in my summary function and my use of placeholder values. Once that was fixed, it was working fine.