jackwener/OpenCLI · error · CommandExecutionError
Instagram reel share confirmation did not appear
Error message
Instagram reel share confirmation did not appear
What it means
After sharing, waitForPublishSuccess polls the page for up to 120 seconds looking for the success state (post URL or confirmation) via buildReelPublishStatusProbeJs(). If no failure is detected but the success/settled confirmation never appears within the timeout, the library throws this error — the share outcome is unknown/unfinished.
Source
Thrown at clis/instagram/reel.js:628
const result = await page.evaluate(buildReelPublishStatusProbeJs());
if (result?.failed) {
throw new CommandExecutionError('Instagram reel share failed');
}
if (result?.ok) {
return result.url || '';
}
if (result?.settled) {
settledStreak += 1;
if (settledStreak >= 3)
return '';
}
else {
settledStreak = 0;
}
if (attempt < 119)
await page.wait({ time: 1 });
}
throw new CommandExecutionError('Instagram reel share confirmation did not appear');
}
async function resolveProfileUrl(page, currentUserId = '') {
if (currentUserId) {
const runtimeInfo = await resolveInstagramRuntimeInfo(page);
const apiResult = await page.evaluate(`
(async () => {
const userId = ${JSON.stringify(currentUserId)};
const appId = ${JSON.stringify(runtimeInfo.appId || '')};
try {
const res = await fetch(
'https://www.instagram.com/api/v1/users/' + encodeURIComponent(userId) + '/info/',
{
credentials: 'include',
headers: appId ? { 'X-IG-App-ID': appId } : {},
},
);
if (!res.ok) return { ok: false };
const data = await res.json();View on GitHub (pinned to 49907e53dc)
Solutions
- Simply check the profile in the Instagram app/web — the reel often did publish and only the confirmation detection timed out.
- Retry after confirming the reel is not a duplicate, since a blind retry can post it twice.
- Increase headroom: use a smaller/faster-encoded video so processing finishes within the 120s poll window.
- Update the library if Instagram changed the success-confirmation markup so the probe can detect it again.
Example fix
// before // 250MB 3-minute video -> publish exceeds 120s poll window // after // re-encode to <100MB, <=90s, 1080x1920 so Instagram processing finishes well inside the timeout
Defensive patterns
Strategy: try-catch
Validate before calling
// keep uploads small enough that Instagram processing fits the confirmation window
import { statSync } from 'node:fs';
if (statSync(videoPath).size > 100 * 1024 * 1024) {
throw new Error('Re-encode: file too large to publish within confirmation window');
} Type guard
null
Try / catch
try {
await client.shareReel({ videoPath, caption });
} catch (err) {
if (String(err.message).includes('confirmation did not appear')) {
// outcome unknown: verify on the profile before retrying to avoid duplicates
const published = await checkProfileForRecentReel(client);
if (!published) await client.shareReel({ videoPath, caption });
} else throw err;
} Prevention
- After a confirmation timeout, always check the profile before retrying to prevent double-posting
- Keep videos small/short so processing completes inside the 120s window
- Don't navigate or close the tab mid-publish
- Update the library if Instagram changes the success-confirmation UI
When it happens
Trigger: 120 probe attempts pass with result neither ok, failed, nor persistently settled — e.g. the dialog stays in a processing state forever, the page navigated somewhere the probe doesn't understand, or the success UI never rendered.
Common situations: Very large/slow uploads exceeding the 2-minute window, Instagram stuck 'Processing...' spinner, a DOM change so the probe no longer recognizes the success confirmation, or the tab navigated away mid-publish (probe evaluates against a different document).
Related errors
- Instagram post share confirmation did not appear
- Instagram reel preview did not appear after upload
- Instagram reel ${expected} editor did not appear
- Instagram reel caption editor did not appear
- Instagram reel caption did not stick before sharing
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/79837977d37da1b1.
Report an issue: GitHub.