Validation Rules cannot distinguish between manual entry by some user and changes made by Apex triggers, workflow rules, processes, and API sessions which are running as that user, per se.
You can configure your automation to also set some hidden field
Checkbox__c when it makes a change, and write your Validation Rule to require
ISCHANGED(Checkbox__c). Then, if your hidden field isn't shown to the user, it cannot be set in their UI interactions and this will allow your Validation Rule to discriminate between the two cases. This requires changes to all of your automation working on the object and a change to your schema, however.