tinyhumansai/openhuman · error

[onboarding:context] save_profile failed

Error message

[onboarding:context] save_profile failed

What it means

The save_profile stage of onboarding context gathering failed: saveProfile rejected while persisting the built PROFILE.md body (URL-only, since the Apify scrape stage is disabled) to the core. The build-profile stage errors, so the user's profile document is not saved and downstream personalization that reads PROFILE.md runs without it.

Source

Thrown at app/src/pages/onboarding/steps/ContextGatheringStep.tsx:270

    }

    // Stage 2 — Apify LinkedIn scrape (disabled: unreliable, skipped during
    // profile build). PROFILE.md is built URL-only from stage 3.
    setStage('linkedin-scrape', 'skipped', 0, 'apify_disabled');
    const scrapedMarkdown = '';

    // Stage 3 — summarize + persist via core LLM compressor
    const profileStartedAt = stageNow();
    setStage('build-profile', 'active');
    try {
      const body = scrapedMarkdown.trim()
        ? scrapedMarkdown
        : `# User Profile\n\nLinkedIn: ${profileUrl}\n\n_Scrape returned no data._`;
      await saveProfile(body);
      setStage('build-profile', 'done', durationMs(profileStartedAt));
    } catch (e) {
      const reason = errorReason(e);
      console.warn('[onboarding:context] save_profile failed', {
        durationMs: durationMs(profileStartedAt),
        reason,
      });
      setStage('build-profile', 'error', durationMs(profileStartedAt), reason);
      setHasError(true);
    }

    console.debug('[onboarding:context] pipeline finished', {
      durationMs: durationMs(pipelineStartedAt),
      result: stageStatusesRef.current['build-profile'] === 'error' ? 'profile_error' : 'completed',
    });
    setFinished(true);
  }

  const continueToChat = () => {
    backgroundClickedRef.current = true;
    console.debug('[onboarding:context] user continued before pipeline completion', {
      finished,

View on GitHub (pinned to 7491200858)

Solutions

  1. Check the stage's logged error — auth/session expiry and core RPC transport are the usual causes
  2. Verify the core process is healthy and retry context gathering; a fresh run rebuilds and re-saves the profile
  3. If the write is rejected as invalid, inspect the generated PROFILE.md body size/content limits
  4. Confirm the profile later via the memory/profile surface that saveProfile targets
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at app/src/pages/onboarding/steps/ContextGatheringStep.tsx:270 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/c5bbdb709578733e. Report an issue: GitHub.