Hi Abdulrazack,
The issue is that you have used remove-threat for two different commands and they have two different scripts so when the remove-threat command is called the first one it finds in the config file works.
You can change the command name to make it work.
Ex:
<ossec_config>
<command>
<name>remove-threat-linux</name>
<executable>remove-threat.sh</executable>
<timeout_allowed>no</timeout_allowed>
</command>
<active-response>
<disabled>no</disabled>
<command>remove-threat-linux</command>
<location>local</location>
<rules_id>87105</rules_id>
</active-response>
</ossec_config>
<ossec_config>
<command>
<name>remove-threat-win</name>
<executable>remove-threat.exe</executable>
<timeout_allowed>no</timeout_allowed>
</command>
<active-response>
<disabled>no</disabled>
<command>remove-threat-win</command>
<location>local</location>
<rules_id>87105</rules_id>
</active-response>
</ossec_config>
Wildcard characters (? and *) can be used to monitor paths that fulfill the given pattern
Ex:
<directories realtime="yes">C:\Users\*\Downloads</directories>
Ref: https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/syscheck.html#directories
Let me know if this works for you.