jackwener/OpenCLI · warning · EmptyResultError

antigravity storage-keys: No keys match "${flt}".

Error message

antigravity storage-keys: No keys match "${flt}".

What it means

storage-keys fetched all keys from the chosen store on the renderer, applied the case-insensitive substring --filter, and found zero matching keys. EmptyResultError signals an empty (filtered) result set rather than a failure — the command ran fine but nothing matched "<flt>".

Source

Thrown at clis/antigravity/storage.js:105

        { name: 'limit', type: 'int', required: false, default: 100, help: 'Max rows to return' },
    ],
    columns: STORAGE_COLUMNS,
    func: async (page, kwargs) => {
        const s = String(kwargs?.storage || 'local').trim().toLowerCase();
        if (s !== 'local' && s !== 'session') throw new ArgumentError('storage', 'must be "local" or "session"');
        const store = s === 'session' ? 'sessionStorage' : 'localStorage';
        const raw = unwrapEvaluateResult(await page.evaluate(`(() => {
      const s = ${store};
      const out = [];
      for (let i = 0; i < s.length; i++) {
        const k = s.key(i); const v = s.getItem(k) || '';
        out.push({ k, bytes: v.length });
      }
      return out;
    })()`));
        const flt = kwargs?.filter ? String(kwargs.filter).toLowerCase() : null;
        const filtered = flt ? raw.filter((r) => r.k.toLowerCase().includes(flt)) : raw;
        if (!filtered.length) throw new EmptyResultError('antigravity storage-keys', flt ? `No keys match "${flt}".` : `${store} is empty.`);
        filtered.sort((a, b) => a.k.localeCompare(b.k));
        const limit = Number.isInteger(kwargs?.limit) && kwargs.limit > 0 ? kwargs.limit : 100;
        return filtered.slice(0, limit).map((r, i) => ({ Index: i + 1, Key: r.k, Bytes: r.bytes }));
    },
});

// ====== Renderer-side: storage-get ======
cli({
    site: 'antigravity',
    name: 'storage-get',
    access: 'read',
    description: 'Read a single localStorage / sessionStorage value on the Antigravity renderer.',
    domain: '127.0.0.1',
    strategy: Strategy.UI,
    browser: true,
    args: [
        { name: 'key', positional: true, required: true, help: 'Storage key name' },
        { name: 'storage', required: false, default: 'local', help: '"local" or "session"' },

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Run without --filter to list all keys, then grep the output.
  2. Shorten the filter to a distinctive substring that definitely appears in the key.
  3. Check the other store: add --storage session (or drop it for local).
  4. Confirm the renderer has actually loaded the state that sets the keys (open the relevant panel in Antigravity).

Example fix

// before
opencli antigravity storage-keys --filter myExtension.settings
// after
opencli antigravity storage-keys --filter myextension
Defensive patterns

Strategy: fallback

Validate before calling

// Confirm matching keys exist before filtering
const all = execSync('opencli antigravity storage-keys --storage local', {encoding:'utf8'});
if (!all.toLowerCase().includes(filter.toLowerCase())) console.warn(`filter "${filter}" matches nothing; listing all keys instead`);

Type guard

function hasMatchingKey(keys, filter) {
  return Array.isArray(keys) && keys.some((k) => typeof k === 'string' && k.toLowerCase().includes(String(filter).toLowerCase()));
}

Try / catch

try {
  run('opencli antigravity storage-keys --filter ' + flt);
} catch (e) {
  if (/No keys match/.test(e.message)) {
    run('opencli antigravity storage-keys'); // unfiltered fallback
  } else throw e;
}

Prevention

When it happens

Trigger: Running `opencli antigravity storage-keys --filter myapp` when no localStorage/sessionStorage key on the current renderer page contains the substring 'myapp' (case-insensitively), or filtering the wrong store (filter applies to the store selected by --storage).

Common situations: Antigravity stores keys under vendor prefixes (workbench.*, vscode.*, auth.*) while the user filters for their extension's key; searching sessionStorage when the data lives in localStorage; the page was freshly reloaded and keys were cleared.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/057f2322879c77a0. Report an issue: GitHub.