How to Prevent ReClip from Updating yt-dlp on Startup

ReClip automatically updates yt-dlp at launch by running yt-dlp -U in its startup scripts; you can disable this by editing reclip.sh or docker-entrypoint.sh to comment out or remove that command.

ReClip relies on yt-dlp for downloading video content, and by default it ensures you're running the latest version by executing an update check every time the application starts. If you need to prevent ReClip from updating yt-dlp on startup—whether for reproducibility, air-gapped environments, or version pinning—you'll need to modify the shell scripts that control the launch behavior. The source code in the averygan/reclip repository makes this straightforward.

Where the Auto-Update Happens

ReClip performs the yt-dlp update in two locations depending on how you run the application:

  • reclip.sh — The main launch script for native/hosted installations
  • docker-entrypoint.sh — The entry point script used in containerized deployments

Both scripts contain a direct call to yt-dlp -U that executes before the Flask web server starts.

Native Installation: Editing reclip.sh

Open reclip.sh and locate the update command. Comment it out or delete the line entirely:

#!/usr/bin/env bash

# ReClip startup script

# ─────► Comment out the automatic yt‑dlp update

# yt-dlp -U

# Start the Flask server

python3 app.py

After this change, ReClip will use whatever yt-dlp binary exists in your PATH without attempting to download updates.

Docker Deployment: Editing docker-entrypoint.sh

For containerized ReClip instances, modify docker-entrypoint.sh similarly:

#!/usr/bin/env bash

# Docker entry‑point for ReClip

# ─────► Prevent yt‑dlp auto‑update

# yt-dlp -U

exec "$@"

Rebuild your container image after editing, or mount the modified script as a volume for testing.

Environment Variable Alternative

If you prefer configurable behavior without editing files, wrap the update command in a conditional check:

if [ -z "$RECLIP_SKIP_UPDATE" ]; then
    yt-dlp -U
fi

Then control the update behavior at runtime:


# Skip the update

RECLIP_SKIP_UPDATE=1 ./reclip.sh

# Or in Docker

docker run -e RECLIP_SKIP_UPDATE=1 averygan/reclip

This approach preserves the default auto-update behavior while giving you an escape hatch when needed.

Verifying Your Changes

After disabling the update, confirm that ReClip uses your preferred yt-dlp version:


# Check the version manually

yt-dlp --version

# Start ReClip and verify no network calls to yt-dlp's update endpoint

./reclip.sh

The application will log startup messages to the console; you should see no output from yt-dlp -U if your modification was successful.

Summary

  • ReClip updates yt-dlp automatically via yt-dlp -U commands in reclip.sh and docker-entrypoint.sh
  • Comment out or delete the yt-dlp -U line to disable automatic updates permanently
  • Use an environment variable wrapper for flexible, non-destructive control
  • Modify the appropriate script based on your deployment method (native vs. Docker)

Frequently Asked Questions

Why does ReClip update yt-dlp on every startup?

yt-dlp frequently breaks when video platforms change their site structures. The automatic update in reclip.sh ensures ReClip has the latest extraction logic without requiring manual intervention. However, this behavior conflicts with reproducible deployments or environments with restricted network access.

Will disabling the update break ReClip functionality?

No. ReClip will continue using whatever yt-dlp version is installed. The risk is that outdated yt-dlp versions may fail to download from certain platforms. For stable, long-running deployments, consider pinning to a known-good yt-dlp version and updating on your own schedule.

Can I update yt-dlp manually while keeping auto-update disabled?

Yes. Run yt-dlp -U independently whenever you choose, or install specific versions via pip: pip install yt-dlp==2024.01.01. ReClip uses the system yt-dlp binary and does not manage its own isolated copy.

Where is the Flask application actually started in these scripts?

After the optional update command, both reclip.sh and docker-entrypoint.sh launch the web server with python3 app.py or exec "$@" (which ultimately runs the application). The app.py file in the repository root contains the Flask backend code and never performs yt-dlp updates itself.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →