Doesn't look like my theory about trying to create /proc/12345/cwd.rclonelink is quite right.
Instead you can reproduce this by having your source directory be a symlink itself:
mkdir src
echo foo > src/bar
ln -s baz src/quux
# works fine
rclone copy --links --metadata src dst
rm -rf dst
# bails
ln -s src alt-src
rclone copy --links --metadata alt-src/ dst
# also bails (but this is the kind of scenario I need to use as a workaround for the cwd issue)
exec 3< src
rclone copy --links --metadata /proc/$$/fd/3/ dst
Please note that this is the exact thing why rsync treats src and src/ differently.
Expanding on this some more:
mkdir src
echo foo > src/bar
ln -s baz src/quux
cd src
sudo mount none -t tmpfs ..
# this will fail
rclone copy --metadata --links . ../dst-rclone
# this will work
cp -ra . ../dst-rclone
The rclone error message very blatantly tries to canonicalise the path (as I mentioned in the OP, that's basically a bug):
2026/06/09 08:46:35 ERROR : Local file system at /tmp/tmp.xMH4Jd28JE/src: error reading source root directory: directory not found
2026/06/09 08:46:35 ERROR : Attempt 1/3 failed with 1 errors and: directory not found
2026/06/09 08:46:35 ERROR : Local file system at /tmp/tmp.xMH4Jd28JE/src: error reading source root directory: directory not found
2026/06/09 08:46:35 ERROR : Attempt 2/3 failed with 1 errors and: directory not found
2026/06/09 08:46:35 ERROR : Local file system at /tmp/tmp.xMH4Jd28JE/src: error reading source root directory: directory not found
2026/06/09 08:46:35 ERROR : Attempt 3/3 failed with 1 errors and: directory not found
2026/06/09 08:46:35 NOTICE: Failed to copy: directory not found