# Fix Taildrop failing when resending a deleted file

**TL;DR:** Taildrop remembers the filename and chokes when you resend the same name after deleting it. Rename the file before resending, or log out and back in on the receiving device.

## The error

```text
Taildrop: Internal Server Error when sending file again after deletion on receiving device
```

Sometimes there is no error at all: the send "succeeds" but the file never appears on the receiver.

## Fix it

### 1. Rename before resending (quickest)

```
cp report.pdf report-v2.pdf
tailscale file cp report-v2.pdf RECEIVER_NAME:
```

Expected: the renamed file arrives in the receiver's Taildrop folder immediately.

### 2. Or re-login the receiving device

On the receiver: disconnect Tailscale and reconnect (or restart the device / tailscaled).

Expected: after re-login, resends of the original filename start working again.

### 3. Verify arrival

Check the receiver's Taildrop incoming folder (Downloads on most platforms, or the folder picked at install on Android).

Expected: the file is there with a fresh timestamp.

## When this applies

- First Taildrop send works, resend of the same filename fails
- The file was deleted on the receiver between sends
- Internal Server Error, or silent no-arrival

## When it does not apply

- First-time sends fail too (connectivity or Taildrop setup problem)
- Android shows a storage permission error (grant the permission instead)
- Files arrive but with weird hashed suffixes (cosmetic, transfers work)

## Tool compatibility

All Tailscale versions with Taildrop. Reported Fedora to Android, Pixel to MacBook, Linux to Android.

## Variant phrasings

### Taildrop works only the first time

Same bug, reported both directions between the same two devices. Same fix.

### Resent files appear only after logout/login

The other verified workaround. Either rename or re-login; both break the stuck state.

## Why it happens

The receiver tracks incoming filenames, and deleting the file does not clear whatever record makes the second send collide. A new name sidesteps the collision; a re-login clears the tracker's state.

## Edge cases

- **Scripted sends:** if you automate `tailscale file cp`, stamp each filename (date, build number) so resends never reuse a name.
- **Emptying trash is not enough:** one reporter emptied the trash and it still failed. Rename or re-login.
- **Android folder pick:** on Android the Taildrop folder is chosen at install; if sends never arrive at all (not just resends), re-check that folder choice first.