We were faced with this exact same problem.
Our multi-select control behaves like yours, except for one detail: when the user clicks into the field, the menu immediately displays the full list of available options.
We explored a number of design options, but agreed early on that we needed a straight-forward, easy-to-discover affordance to trigger the "select all" command.
After some iterations, we simply added a clickable link (apply appropriate link styling for your UI accordingly) to the right above the field, like this:
There might be a more elegant approach, but this one just works, is easy to find, and its label is unambiguous.
Do make sure, though, that you provide a method for unselecting all options, too, especially if the field can contain lots and lots of options. Placing a "x" clear button inside the field, and to the right, is a simple, well-established pattern to do this.
When all options are selected, the link appears in disabled styling. Also, each item that's been selected does not appear in the menu anymore. Hence, the combination of completely empty menu plus disabled "select all" link clearly reflects that the field contains all supported options.
On a more general note, I humbly suggest you double-check via testing that this is, in fact, the proper control to begin with.
Especially when showing a lot of "tokens" inside the field, it might be difficult to visually grasp its contents, and a list control might be the better choice. That's because it dedicates one line to each item, and it left-aligns all items which makes them much easier to scan than text tokens/pills.
We build this on React Select. The appearance of the component on that site is slightly different from ours, but its behavior is identical, except for the Select All link. So, if you play around with the samples on that page, you can more easily tell if this control is right for your specific design.
In particular, the component grows and shrinks vertically depending on the number of tokens that are shown in the input field. In our design context, this behavior worked well (enough) even with dozens of options selected.
BTW, if you place the field label next to the field, make sure it is top-aligned with the field. I've seen implementations where the label was vertically centered with the field instead, which made it really difficult to find. Better yet, place the label above the field, as shown above.