The only way I know of is to either disable or move them.
One workaround I have used is to have a main Macro Group NOT set as a palette.
Then a separate MG that has Alias Macros that point to the actual macros in the main MG.
I have a very similar method with my TimeTracker system.
Before I have punched in, my Macro Group and Palette looks like this:
So the "Punch OUT" macro is disabled and does NOT show in the Palette.
But after I punch IN, the Palette changes to this:
Notice also that the "Status" macro actually changed its name to show data about the task I punched in to. My "Punch IN" macro has these actions to handle this:
Here's the script that changes the "Status" Macro name:
property ptyScriptName : "Set Time Tracker (TT) Status Macro Name"
property ptyScriptVer : "1.0"
property ptyScriptDate : "2019-05-20"
property ptyScriptAuthor : "JMichaelTX"
property nameRoot : "âť—STATUS: "
tell application "Keyboard Maestro Engine"
set taskTitle to getvariable "DND_TT__Work_Task"
end tell
tell application "Keyboard Maestro"
set oMacro to macro id "E88C0241-A09A-4BBC-89F7-B9B31BAD6804"
tell oMacro
if (taskTitle ≠"") then
set name to nameRoot & "IN: " & taskTitle
else
set name to nameRoot & "OUT"
end if
end tell
end tell
Note that it DOES require the KM Editor app to be running. But then I have it running virtually all the time.