GuideFebruary 23, 20276 min read

Spring Cleaning Your Dev Environment: Audit, Prune, and Sync

An annual dev environment cleanup guide: audit what you are tracking, remove what you do not need, scan for new tools, and push a clean baseline.

Your Dev Environment Accumulates Cruft

Over the course of a year, your development environment drifts. You install tools for a project and never remove them. Config files accumulate settings for services you no longer use. Environment variables reference APIs from clients you finished working with months ago. SSH keys for decommissioned servers sit in your config alongside active ones.

None of this causes immediate problems. But the accumulation makes your environment harder to understand, slower to sync, and more likely to contain stale secrets that should have been rotated. An annual cleanup keeps everything lean and intentional.

Here is a structured cleanup process using ConfigSync's tools.

Step 1: Audit What You Are Tracking

Start by reviewing everything ConfigSync currently manages. You might be surprised by what is in there.

Audit tracked configurations
$ configsync list Modules (7 enabled): shell ~/.zshrc, ~/.zprofile (2 files) git ~/.gitconfig, ~/.gitignore_global (2 files) ssh ~/.ssh/config, 4 key pairs (9 files) homebrew ~/.Brewfile (47 formulae, 12 casks) vscode settings, keybindings, 23 extensions node ~/.npmrc, global packages aws ~/.aws/config, ~/.aws/credentials Additional configs (14 tracked): ~/.prettierrc ~/.eslintrc.json ~/.pgclirc ~/.config/httpie/config.json ~/old-project/.env.local # ← Still needed? ~/.config/defunct-tool/config.yml # ← Tool uninstalled Secrets (6 stored): DB_PASSWORD STRIPE_KEY OLD_CLIENT_API_KEY # ← Still needed? AWS_ACCESS_KEY_ID OPENAI_API_KEY LEGACY_SERVICE_TOKEN # ← Still needed?

Look for configs that reference tools you no longer use, environment files for projects you have finished, and secrets for services you have decommissioned.

Step 2: Remove Unused Configs

For each item that is no longer needed, remove it from ConfigSync's tracking. This does not delete the file from your machine; it just stops syncing it.

Remove stale configs and secrets
# Remove configs for tools you no longer use $ configsync remove config ~/.config/defunct-tool/config.yml Removed from tracking (file still exists on disk). # Remove old project env files $ configsync remove env ~/old-project/.env.local Removed from tracking. # Remove stale secrets $ configsync secret delete OLD_CLIENT_API_KEY $ configsync secret delete LEGACY_SERVICE_TOKEN Deleted 2 secrets.
Removing a secret from ConfigSync does not revoke it at the source. If the secret is still active at the provider (AWS, Stripe, etc.), deactivate it there first. Then remove it from ConfigSync.

Step 3: Scan for New Tools

Over the past year, you probably installed new tools that ConfigSync does not know about yet. The scan command checks your system for tools that have configuration files worth tracking.

Scan for untracked configurations
$ configsync scan Detected untracked configurations: ~/.config/lazygit/config.yml (lazygit installed 3 months ago) ~/.config/starship.toml (starship prompt installed 6 months ago) ~/.cargo/config.toml (Rust toolchain detected) ~/.config/bat/config (bat installed, custom theme) Add these? Use: configsync add config <path> Detected new Homebrew packages (not in Brewfile): lazygit, starship, bat, cargo-watch These will be captured automatically on next push.

Step 4: Clean Up Homebrew

Homebrew accumulates old versions, unused dependencies, and packages you installed once and forgot about.

Clean up Homebrew
# See what is installed but not in your Brewfile $ brew bundle cleanup --file=~/.Brewfile Would uninstall: heroku (not in Brewfile, last used 8 months ago) mongodb-community (not in Brewfile) # Remove unused packages $ brew bundle cleanup --file=~/.Brewfile --force # Clean up old versions and cache $ brew cleanup Removing old versions... Freed 2.3 GB of disk space.

Step 5: Check for Drift

If you use multiple machines, check whether they have drifted apart. The diff command shows what is different between your local state and the last synced snapshot.

Check for drift
$ configsync diff Local changes since last push: Modified: ~/.zshrc (added 3 aliases) Modified: ~/.gitconfig (changed default branch) Added: ~/.config/starship.toml (new file) Unchanged: 58 files Remote changes since last pull: Modified: ~/.ssh/config (from work-desktop) Added: ~/.prettierrc (from work-desktop) Recommendation: Pull remote changes, then push to sync both machines.

Step 6: Push a Clean Baseline

After auditing, pruning, scanning, and resolving drift, push a clean baseline snapshot. This becomes your new starting point.

Push clean baseline
$ configsync push -m "Annual cleanup - pruned stale configs, added new tools" Scanning 7 modules... Tracking 12 configs (removed 2 stale) Encrypting 4 secrets (removed 2 stale) Pushed snapshot (1.9 MB) in 4s. Summary: Removed: 2 configs, 2 secrets Added: 4 new configs (lazygit, starship, bat, cargo) Updated: 3 modified files Snapshot size reduced by 15%
Cleanup ActionBeforeAfter
Tracked configs1412 (-2 stale, +4 new = 16, then -4 duplicates)
Stored secrets64 (removed 2 unused)
Homebrew packages5955 (removed 4 unused)
Snapshot size2.2 MB1.9 MB

An annual cleanup takes about thirty minutes and pays for itself in clarity. You know exactly what you are syncing, why you are syncing it, and that nothing stale is hanging around. Your environment is lean, intentional, and ready for another year of work.

Ready to try ConfigSync?

Sync your entire dev environment across machines in minutes. Free forever for up to 3 devices.