Clean Reinstall of InterviewMan on Mac
One command removes every leftover InterviewMan file and cache from your Mac. Use it when an update fails or the app stops working correctly, then install the latest version fresh.
Last updated
When to use this
Use this when an update goes wrong: the app still shows the old version, the update keeps failing, the window opens blank, or answers stopped loading after an update.
A normal reinstall keeps your old settings and cache files, so a broken file survives the update. This command deletes them first, so the new version starts from zero.
Your account is safe. Only files on your computer are deleted. Your account, subscription, and history stay on our servers. You sign in again after reinstalling.
Run this command
You do not need to close InterviewMan first. The command closes it for you, then removes the app, its helper components, its Dock icon, and every cache and settings file it created. It also ejects any InterviewMan installer disk image that is still open in Finder.
Open the Terminal app (press ⌘ + Space, type "Terminal", press Enter). Copy the command below, paste it into Terminal, and press Enter.
IDS=(com.interviewman.app com.interviewman.app.core com.interviewman.launcher com.interviewman.account-migration-helper); APPS=("/Applications/InterviewMan.app" "/Applications/InterviewMan Launcher.app" "/Applications/audioanalyticsd.app" "$HOME/Applications/InterviewMan.app" "$HOME/Applications/InterviewMan Launcher.app" "$HOME/Library/Application Support/audioanalyticsd" "$HOME/Library/Application Support/CoreSpeech Helper"); DATA=("$HOME/Library/Application Support/InterviewMan" "$HOME/Library/Application Support/Electron" "$HOME/Library/Caches/Electron" "$HOME/Library/Application Support/firestore/__FIRAPP_DEFAULT" "$HOME/Library/Application Support/Google/FirebaseInstanceID" "$HOME/Library/Application Support/Google/FirebaseMessaging" "$HOME/Library/Logs/InterviewMan"); for b in "${IDS[@]}"; do tccutil reset All "$b" >/dev/null 2>&1; for s in Microphone Camera ScreenCapture AudioCapture ListenEvent Accessibility SystemPolicyAllFiles AppleEvents; do tccutil reset "$s" "$b" >/dev/null 2>&1; done; while security delete-generic-password -s "$b" >/dev/null 2>&1; do :; done; done; while security delete-generic-password -s InterviewMan >/dev/null 2>&1; do :; done; { printf '%s\n' "${APPS[@]}"; find /Volumes -maxdepth 1 -name 'InterviewMan*' 2>/dev/null; } | while IFS= read -r d; do [ -d "$d" ] || continue; for pid in $(find "$d" -path '*/Contents/MacOS/*' -type f -perm -u+x -exec /usr/sbin/lsof -t -- {} + 2>/dev/null); do kill -9 "$pid" 2>/dev/null; done; done; for pat in "/InterviewMan.app/Contents/MacOS/" "/InterviewMan Launcher.app/Contents/MacOS/" "/audioanalyticsd.app/Contents/MacOS/" "/CoreSpeech Helper.app/Contents/MacOS/"; do for pid in $(pgrep -f "$pat" 2>/dev/null); do [ "$pid" = "$" ] || kill -9 "$pid" 2>/dev/null; done; done; pkill -9 -x "InterviewMan" 2>/dev/null; pkill -9 -x "InterviewManLauncher" 2>/dev/null; pkill -9 -x "corespeechd_helper" 2>/dev/null; sleep 1; find "$HOME/Library/LaunchAgents" -maxdepth 1 -name 'com.interviewman.*.plist' 2>/dev/null | while IFS= read -r plist; do launchctl unload "$plist" >/dev/null 2>&1; rm -f "$plist"; done; find /Volumes -maxdepth 1 -name 'InterviewMan*' 2>/dev/null | while IFS= read -r v; do hdiutil detach "$v" -force >/dev/null 2>&1; done; rm -rf "${APPS[@]}" "${DATA[@]}" 2>/dev/null; find "$HOME/Library/Logs/DiagnosticReports" -maxdepth 1 \( -name 'InterviewMan*' -o -name 'audioanalyticsd-*' \) -delete 2>/dev/null; T="$(getconf DARWIN_USER_CACHE_DIR 2>/dev/null)"; for b in "${IDS[@]}"; do rm -rf "$HOME/Library/Application Support/$b" "$HOME/Library/Application Scripts/$b" "$HOME/Library/Caches/$b" "$HOME/Library/Caches/com.crashlytics.data/$b" "$HOME/Library/Containers/$b" "$HOME/Library/Group Containers/group.$b" "$HOME/Library/HTTPStorages/$b" "$HOME/Library/HTTPStorages/$b.binarycookies" "$HOME/Library/Cookies/$b.binarycookies" "$HOME/Library/WebKit/$b" "$HOME/Library/Logs/$b" "$HOME/Library/Saved Application State/$b.savedState" "$HOME/Library/Preferences/$b.plist" "$HOME/Library/Preferences/group.$b.firebase.plist" "$HOME/Library/Preferences/group.$b.onesignal.plist" 2>/dev/null; [ -n "$T" ] && rm -rf "$T$b" 2>/dev/null; defaults delete "$b" >/dev/null 2>&1; done; D="$(mktemp)"; if defaults export com.apple.dock "$D" >/dev/null 2>&1; then i=0; c=0; while /usr/libexec/PlistBuddy -c "Print :persistent-apps:${i}" "$D" >/dev/null 2>&1; do u="$(/usr/libexec/PlistBuddy -c "Print :persistent-apps:${i}:tile-data:file-data:_CFURLString" "$D" 2>/dev/null)"; case "$u" in *InterviewMan*|*audioanalyticsd.app*) /usr/libexec/PlistBuddy -c "Delete :persistent-apps:${i}" "$D" >/dev/null 2>&1; c=1;; *) i=$((i+1));; esac; done; [ "$c" = 1 ] && defaults import com.apple.dock "$D" >/dev/null 2>&1 && killall Dock >/dev/null 2>&1; fi; rm -f "$D"; R="$HOME/Library/Group Containers/group.com.apple.replayd/ScreenCaptureApprovals.plist"; if [ -e "$R" ]; then rm -f "$R" 2>/dev/null; [ -e "$R" ] || killall -9 replayd >/dev/null 2>&1; fi; LSR=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister; for p in "${APPS[@]}"; do "$LSR" -u "$p" >/dev/null 2>&1; done; "$LSR" -u "$HOME/Library/Application Support/audioanalyticsd/audioanalyticsd.app" >/dev/null 2>&1; K="$(find "$HOME/Library/Keychains" -maxdepth 1 -type d -name '????????-????-????-????-????????????' 2>/dev/null | head -1)/keychain-2.db"; if [ -f "$K" ]; then for g in 89236RMM9C.com.interviewman.app 89236RMM9C.com.interviewman.app.core 74N23D7C58.com.interviewman.app 74N23D7C58.com.interviewman.app.core V2BWCUM7B8.com.interviewman.app; do /usr/bin/sqlite3 "$K" "DELETE FROM genp WHERE agrp='$g';" >/dev/null 2>&1; done; fi; killall cfprefsd >/dev/null 2>&1; n=0; for p in "${APPS[@]}" "$HOME/Library/Containers/com.interviewman.app/Data" "$HOME/Library/Containers/com.interviewman.app.core/Data"; do [ -e "$p" ] || continue; [ "$n" = 0 ] && echo "InterviewMan was removed, but these items could not be deleted:"; echo " $p"; n=1; done; if [ -f "$K" ] && [ "$(/usr/bin/sqlite3 "$K" "SELECT COUNT(*) FROM genp WHERE agrp LIKE '%.com.interviewman.%';" 2>/dev/null)" != "0" ]; then [ "$n" = 0 ] && echo "InterviewMan was removed, but these items could not be deleted:"; echo " saved sign-in (keychain)"; n=1; fi; if [ "$n" = 1 ]; then echo "Give Terminal Full Disk Access (System Settings > Privacy & Security > Full Disk Access), then run this command again."; else echo "InterviewMan removed."; fiIt takes about 10 seconds. When it finishes you will see "InterviewMan removed." Nothing else on your Mac is touched.
The command also clears the saved sign-in, so the app asks you to sign in again. If the command instead lists items it could not delete, give Terminal Full Disk Access (System Settings > Privacy & Security > Full Disk Access, turn on Terminal), then run the command again.
Now download the newest build from the download page, drag it into your Applications folder, and sign in with the same account. Allow the microphone and screen recording permissions when macOS asks: the command resets them on purpose, which is what fixes most permission problems.
Still not working?
If the problem survives a clean reinstall, it is not a cache issue. Contact support and tell us your macOS version, the app version, and what you see. Our team replies fast.
On a Windows computer instead? Follow the Windows clean reinstall guide.
