Whats a good word to describe someone who isn't easily fooled or isn't gullible?
I would expect that a savvy person would not be gullible and would be difficult to fool.
In common use, one might call someone who's very on-guard against being tricked suspicious. This sense of the word is defined by Merriam-Webster as "having or showing a feeling that something is wrong or that someone is behaving wrongly : feeling or showing suspicion". Note that this word can be applied both to the person who suspects something and to the person or thing that they suspect.
Another, perhaps less confrontational, way to describe this person skeptical, which is defined by Merriam-Webster "as having or expressing doubt about something (such as a claim or statement)".
What about a skeptic?
noun skep·tic \ˈskep-tik\ : a person who questions or doubts something (such as a claim or statement) : a person who often questions or doubts things
Skeptics are usually hard to fool or deceive, as they tend to be doubtful until evidence or something shows otherwise.
wise - the definition given by Collins includes shrewd, suggested above.
Although not specific to being difficult to fool, the word sharp comes to mind.
You won’t fool Charlie, he's a sharp one.
Having or showing speed of perception, comprehension, or response: