slopus/happy · warning

Claude clear goal action is not supported

Error message

Claude clear goal action is not supported

What it means

The server advertises per-action goal capabilities (capabilities.clear / capabilities.edit) in the goal status. If a 'clear' action is requested while capabilities.clear is false/absent, the handler rejects it as unsupported rather than attempting an action Claude cannot perform.

Source

Thrown at packages/happy-cli/src/claude/runClaude.ts:589

    session.rpcHandlerManager.registerHandler('goal-action', async (params: unknown) => {
        const actionParams = params && typeof params === 'object' && !Array.isArray(params)
            ? params as Record<string, unknown>
            : null;
        const command = actionParams ? parseClaudeGoalActionParams(actionParams) : null;
        if (!command) {
            throw new Error('Unsupported Claude goal action');
        }
        if (pendingClaudeGoalAction) {
            throw new Error('Claude goal action already in progress');
        }
        if (!latestClaudeGoalStatus || latestClaudeGoalStatus.status !== 'active') {
            throw new Error('No active Claude goal');
        }

        const capabilities = latestClaudeGoalStatus.capabilities ?? {};
        if (command.type === 'clear' && !capabilities.clear) {
            throw new Error('Claude clear goal action is not supported');
        }
        if (command.type === 'set' && !capabilities.edit) {
            throw new Error('Claude edit goal action is not supported');
        }
        if (currentRunMode !== 'remote') {
            throw new Error('Claude goal action is not ready: remote mode is not active');
        }
        if (!currentSession || currentSession.thinking) {
            throw new Error('Claude goal action is not ready while Claude is thinking');
        }
        if (messageQueue.size() > 0) {
            throw new Error('Claude message queue is busy');
        }

        const slashCommand = command.type === 'clear'
            ? '/goal clear'
            : `/goal ${command.objective}`;
        const mode = currentEnhancedMode();

View on GitHub (pinned to b824cd0a46)

Solutions

  1. Upgrade the CLI (and the bundled Claude SDK) to a version that supports goal clearing.
  2. Use a different mechanism to reset the goal (e.g. set a new goal instead of clearing).
  3. Hide the clear action in the app when capabilities.clear is false.
  4. Check latestClaudeGoalStatus.capabilities to confirm what the session supports before sending actions.

Example fix

// before
await rpc('goal-action', { action: 'clear' });
// after
if (goalStatus?.capabilities?.clear) await rpc('goal-action', { action: 'clear' });
Defensive patterns

Strategy: validation

Validate before calling

if (goalStatus?.status === 'active' && !goalStatus.capabilities?.clear) {
  console.warn('Clearing goals is not supported by this session');
  return;
}

Type guard

function supportsClear(s: { status: string; capabilities?: { clear?: boolean } } | null): boolean {
  return s?.status === 'active' && s.capabilities?.clear === true;
}

Try / catch

try {
  await rpc('goal-action', { action: 'clear' });
} catch (err) {
  if ((err as Error).message.includes('clear goal action is not supported')) {
    logger.warn('Session does not support goal clear — upgrade the CLI/Claude SDK or set a new goal instead');
  } else throw err;
}

Prevention

When it happens

Trigger: A 'goal-action' with type 'clear' arrives while the active goal status's capabilities object lacks a truthy clear flag — i.e. the current Claude version/mode does not support clearing goals.

Common situations: Older Claude Code SDK versions lacking the clear-goal feature; a session mode where goal clearing is disabled; client/server version skew where the app shows a clear button the session can't honor.

Related errors


AI-assisted analysis of slopus/happy@b824cd0a46 (2026-08-31). Data as JSON: /api/errors/7566fb83ba859f62. Report an issue: GitHub.