Cryptomatte - Clean edges
It looks like you are trying to use Pick image output as is. This answer explains why you are not supposed to use Pick image output. In short, it is intended only for picking the values, and it is not Cryptomatte mask.
Cryptomatte masks are antialiased and have clean edges but you need the software capable of using them. You can export them from Render Layers with File Output node, or connect to Viewer Node and export each Cryptomatte image manually from Image Editor. In simplest case just exporting Crypto*00 mask will be sufficient (it allows up to 2 object or materials per pixel). If you use real Cryptomatte masks and still get imperfect edges it may help to either render with more samples or to enable Accurate Mode for Cryptomatte in View Layer Properties (only available with Cycles CPU rendering). Fortunately, in most cases Accurate Mode is not necessary.
If you want colored and antialiased mask (so using Matte output alone is not sufficient) but do not want to use real Cryptomatte masks directly, there is a simple solution too.
Create this simple emission material:

You can use Object or Material Index instead of Random. Just use Math node to divide by total number of IDs and the result can be connected to the H input. This way for each ID you will get predictable color if you know total number of IDs.
Then assign the Material in View Layer Properties &gt; Override &gt; Material Override (you may also want to override number of samples, it will control AA quality):

The result is perfectly antialiased mask. You can either use Render Result directly (if you want the mask to include all objects), or use Cryptomatte to limit the mask to specific objects you decided to pick: