slopus/happy · warning
Claude edit goal action is not supported
Error message
Claude edit goal action is not supported
What it means
Analogous to the clear guard: a 'set' (edit) goal action is only allowed when the active goal status advertises capabilities.edit. If the edit capability is absent, the handler rejects the action because the session cannot modify the goal.
Source
Thrown at packages/happy-cli/src/claude/runClaude.ts:592
? 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();
return await new Promise<{ ok: true }>((resolve, reject) => {
const timeout = setTimeout(() => {View on GitHub (pinned to b824cd0a46)
Solutions
- Upgrade CLI/Claude SDK to a version supporting goal edits.
- Clear and re-create the goal instead of editing it, if clear is supported.
- Gate the edit UI on capabilities.edit before sending the action.
- Verify the session's goal status metadata to confirm supported capabilities.
Example fix
// before
await rpc('goal-action', { action: 'set', goal: 'new goal' });
// after
if (goalStatus?.capabilities?.edit) await rpc('goal-action', { action: 'set', goal: 'new goal' }); Defensive patterns
Strategy: validation
Validate before calling
if (goalStatus?.status === 'active' && !goalStatus.capabilities?.edit) {
console.warn('Editing goals is not supported by this session');
return;
} Type guard
function supportsEdit(s: { status: string; capabilities?: { edit?: boolean } } | null): boolean {
return s?.status === 'active' && s.capabilities?.edit === true;
} Try / catch
try {
await rpc('goal-action', { action: 'set', goal });
} catch (err) {
if ((err as Error).message.includes('edit goal action is not supported')) {
logger.warn('Session cannot edit goals — clear and re-create the goal or upgrade the SDK');
} else throw err;
} Prevention
- Gate edit UI on capabilities.edit.
- Upgrade Claude SDK when goal editing is required.
- Prefer clear+set over edit when edit is unsupported.
- Refresh capability info on each goal status change.
When it happens
Trigger: A 'goal-action' with type 'set' arrives while capabilities.edit is falsy on the latest goal status — the running Claude integration does not support editing an existing goal.
Common situations: Older Claude SDK versions without goal editing; session started in a mode that disables goal edits; app UI not gated on advertised capabilities.
Related errors
- Claude clear goal action is not supported
- Codex goal actions are not supported by this runtime
- The chosen rewind point is no longer present in the source C
- Resume session handler not available
- Unsupported Claude goal action
AI-assisted analysis of slopus/happy@b824cd0a46 (2026-08-31).
Data as JSON: /api/errors/5e5014523458dd3b.
Report an issue: GitHub.