I know that using -r <rid> would fix my problem it just seem counter intuitive that rbt post <CLN> updates the existing review for <CLN> and adding --diff-filename breaks that behaviour.

From looking at the code it seems that running get_revisions before the if which checks for self.options.diff_filename in commands/post.py (line 772) would fix my issue. Since I am providing a CLN get_revisions() will succeed and in cases in which this is not true it will just return None. I am just not sure why it's so important to keep self.revision None in the case --diff-filename is provided. I looked at the code for the alpha version on github (master branch) and this is also true there.