I've got a game with a custom cursor scheme using my own images.
Using 3.6. Lately I have been having a problem when floating my mouse over my slide-out inventory. As I slide the cursor up and down the inventory, it slides over each item and the cursors switches to match what I have programmed for each inventory item.
When the cursor first slides over a specific item it first flashes a white pointing hand for what is probably one frame but very visually annoying. I assume that white hand cursor is one of the built-in defaults but I am never ever using them so I don't know what to make of this: I only use Input.set_custom_mouse_cursor() and the code traces through ok so I don't know how to chase this down.
Here is a pic of the mistaken cursor. I had to take a high-speed video of the screen and select a frame that captured it.

When are you declaring the custom cursor? Can we see the code? Likely it's trying to pull up a cursor before your custom loads.

EDIT: I noticed you have the mouse cursor being set on Input so it is changing when an input happens and not every frame. You may want to either:
1) Build an area around your boxes to change the cursor graphic BEFORE the mouse enters. (This will likely work for you. Just attach some signals to when the mouse enters an area larger than your button and change the graphic BEFORE it pops up).
2) Change your custom cursor at 'ready()' vs on input, like with maybe your first graphic. (though I am not sure this will work, you are trying to change cursors for each object?)

    SnapCracklins
    Thanks for the reply!
    I had the same thought that there was a loading delay. I did not have this problem in the past but I recently refactored my code and still tracking down bugs so it seemed fixable without having to change the mechanism.
    re: 1) Wouldn't the flickering icon just appear instead when the area larger than my button is encountered?
    2) The mouse position is monitored every frame and the cursor is changed as commanded as it moves across the screen so using Ready wouldn't work.

      Shadowphile what you can also try is just have alternate graphics on the mouse cursor and changing their visibility when they enter the space. Bit of a brute force solution but would work. Then just watch it every frame. Cursor graphics are so small Godot sneezes at them, so this sort of inefficiency can be forgiven.

        SnapCracklins
        Well it seems like I am watching it every frame and changing the cursor as need. Regardless of where the cursor is on the screen, every frame determines what the cursor should be. Since I never even tried to use the built-in cursor icons, I shouldn't see any. I think it's an interim glitch that something in my code released when I changed it at some point.
        (I also need to test out a null cursor to see if Godot will revert to the default cursor when an assignment goes wrong. However, I didn't see any evidence of null assignments when I traced out any cursor changes using .set_custom_mouse_cursor(

        You may want to post code - it could be something as simple as a syntax error.

          SnapCracklins
          Unfortunately my project has gotten fairly large and I mostly build my tree from script. Too complicated to share anything.

          a month later

          SnapCracklins
          I finally found where the flickering cursor is coming from. The Mouse settings for the controls have a STOP, IGNORE, or PASS settings with a default cursor, which IS the cursor image flickering into place. It only shows up for probably one frame and never stays with the default cursor before my own cursor code (when Mouse Enters and Exits signals)
          Problem is, I have no idea when it falls back to the default cursor because I don't know when that is invoked. Any ideas?
          The good news is that it feels resolvable now, yay!

          Update: I realized that every frame Godot will use the built-in cursors until I reassign them (every frame), so it appears that my button Signal is asynchronous with my cursor update code, which may not update before the next refresh.