When there's an expression with a pipe the cmd starts two threads on both sides of the pipe and the expression is parsed twice (for each side of the pipe) so carets need to be doubled.

On the left side:

echo ^^^&|more

On the right side:

break|echo ^^^&