BloopAI/vibe-kanban · info
[RemoteActionsProvider] Action "${action.id}" is unavailable
Error message
[RemoteActionsProvider] Action "${action.id}" is unavailable in remote web. What it means
`RemoteActionsProvider.executeAction` handles only the `settings` and `project-settings` action ids in remote web. Any other ActionDefinition dispatched through the shared ActionsContext reaches the final fallback, which logs this console.warn and does nothing — the action is silently dropped.
Source
Thrown at packages/remote-web/src/app/providers/RemoteActionsProvider.tsx:173
if (action.id === "settings") {
await SettingsDialog.show({
initialSection: "organizations",
});
return;
}
if (action.id === "project-settings") {
await SettingsDialog.show({
initialSection: "remote-projects",
initialState: {
organizationId: selectedOrgId ?? undefined,
projectId: projectId ?? undefined,
},
});
return;
}
console.warn(
`[RemoteActionsProvider] Action "${action.id}" is unavailable in remote web.`,
);
},
[projectId, selectedOrgId],
);
const getLabel = useCallback(
(
action: ActionDefinition,
workspace?: Workspace,
ctx?: ActionVisibilityContext,
) => {
if (ctx) {
return getActionLabel(action, ctx, workspace);
}
return resolveLabel(action, workspace);
},
[],View on GitHub (pinned to 4deb7eca8f)
Solutions
- Hide desktop-only actions from command palettes/menus when running in remote web (filter by runtime).
- If the action should work remotely, add an implementation branch in RemoteActionsProvider.executeAction for that action.id.
- Extend the ActionDefinition type with a `remoteSupported` flag (or similar) and gate visibility/resolution on it.
Example fix
// before
executeAction({ id: 'open-in-editor' }); // warns and no-ops
// after
if (action.remoteSupported) executeAction(action);
else hideAction(action); // don't render in remote web Defensive patterns
Strategy: type-guard
Validate before calling
const REMOTE_SUPPORTED = new Set(['settings', 'project-settings']); const visibleActions = actions.filter((a) => REMOTE_SUPPORTED.has(a.id));
Type guard
function isRemoteSupported(action: ActionDefinition): boolean {
return action.id === 'settings' || action.id === 'project-settings';
} Prevention
- Filter the shared action registry to remote-supported ids before feeding command palettes or menus in remote web.
- Add a `remoteSupported` (or `supportedRuntimes`) field to ActionDefinition and enforce it at the visibility layer.
- When adding a new shared action, update RemoteActionsProvider.executeAction or explicitly mark it desktop-only.
When it happens
Trigger: Executing a shared action (e.g. workspace start/stop, open-in-editor, dev-server actions, archive, etc.) via executeAction from command palette, context menus, or keyboard shortcuts while in remote web, when the action id is not 'settings' or 'project-settings'.
Common situations: Shared action registries listing desktop-only actions; users invoking them from the command palette in the hosted web UI; new actions added to shared/types/actions but not implemented in the remote provider.
Related errors
AI-assisted analysis of BloopAI/vibe-kanban@4deb7eca8f (2026-08-29).
Data as JSON: /api/errors/8c8bc5d01d486e44.
Report an issue: GitHub.