Sims 4 trait cheats: equipping, removing and clearing traits from the console
traits.equip_trait <trait_type> [opt_sim] adds a trait and traits.remove_trait <trait_type> [opt_sim] removes one. The trait argument is an internal tuning name such as trait_Clumsy, or an unambiguous fragment of one, not the label Create a Sim shows.
The two commands, and the argument that decides whether they work
traits.equip_trait
<trait_type> [opt_sim] [index_in_personality_list] — gives the Sim a named trait. traits.trait_commands:41
traits.remove_trait
<trait_type> [opt_sim] — removes a named trait from the Sim. traits.trait_commands:50
Those two effect descriptions are the game's own, taken from the module that registers the commands.
The optional Sim argument defaults to the selected Sim, so with a Sim selected you type the trait and stop. The third argument on the equip side inserts the trait at a position in the personality list rather than appending it, which changes the order the trait panel shows and nothing else.
Trait names are internal IDs, and that is why the command appears to fail
trait_type is a TunableInstanceParam over the TRAIT resource type. The word you type is handed to get_tunable_instance, which asks the trait instance manager for it as an id first and then matches it against the tuning names of every loaded trait. Those names are internal identifiers, not the labels Create a Sim prints, and the two rarely look alike.
The shape of a real one is documented inside the game's own tuning. The Trait class carries an animation-parameter field whose description explains that if the field is unset the parameter is auto-generated from the instance name, and gives the example 'trait_Clumsy'.
| What you type | What it is | Result |
|---|---|---|
trait_Clumsy | A tuning instance name, the form the game's own documentation uses | Resolves |
Clumsy | A fragment of the tuning name | Resolves if exactly one trait name contains it, otherwise the console lists the candidates |
Hates Children | A Create a Sim label with a space in it | Fails. The space splits it into two arguments before the lookup ever runs |
| A trait's guid64 | The 64-bit tuning id, which is what the save file stores | Resolves — the helper tries the argument as an id before it tries it as a name |
get_tunable_instance takes a name string or an id, and it carries an exact_match flag that the caller chooses. fillmotive sets that flag to true. The trait commands do not, which is why a fragment is enough for them and is not enough for a motive name.
When a fragment matches nothing the helper raises No names matched '{}'. and when it matches several it raises Multiple names matched '{}': {} with the matches listed and sorted. That second message is the closest thing the game has to a trait-name browser: type a fragment, read the candidates back, then run the command with the one you wanted.
The other reasons a trait does not get added
Resolving the name is only the first gate. SimInfo.add_trait goes through TraitTracker.can_add_trait, which returns False and adds nothing when any of these hold.
- The Sim's age, gender or species is not in the trait's allowed set.
- The personality slots are already full. The number of slots is tuned per age rather than fixed in the code, so it is a data value, not a constant.
- A trait already equipped conflicts with this one, or a higher-weight trait in the same exclusive set rules it out.
- The trait belongs to a system that is switched off, lifestyles being the documented case.
- The entitlement check in front of the command fails.
traits.equip_traitasksis_granted_or_non_account_reward_itemabout the trait before it callsadd_traitat all.
None of those five prints an explanation. The name lookup does report its own failures, so if the console says nothing at all and the trait panel is unchanged, the name resolved and one of the five gates above turned it down.
Removing is not a clean undo
traits.remove_trait takes the trait off, but adding and removing a trait both fire tuned loot, and removing one strips the trait knowledge from every Sim who knew about it. Re-adding does not give that knowledge back. Treat a trait swap as partly one-way rather than a toggle.
All 14 trait commands in build 1.126.73.1030
7 of the 14 run in a retail game. The other 7 are registered in the same two modules and appear on trait cheat lists anyway.
| Command | Arguments | Works in retail | Type | Needs testingcheats | What it does | Registered at |
|---|---|---|---|---|---|---|
traits.clear_personality_traits | [opt_sim] | Yes | Live | No | — | traits.trait_commands:72 |
traits.equip_all_traits_with_tag | <tag> [opt_sim] | Yes | Live | No | — | traits.trait_commands:192 |
traits.equip_gameplay_object_preference | <trait_object> [preference_type] [opt_sim] | Yes | Live | No | — | traits.gameplay_object_preference_commands:14 |
traits.equip_trait | <trait_type> [opt_sim] [index_in_personality_list] | Yes | Live | No | Gives the Sim a named trait. | traits.trait_commands:41 |
traits.generate_skill_list_from_trait_tag | <tag_id> <mastery_perk_id> | Yes | Live | No | — | traits.trait_commands:207 |
traits.remove_gameplay_object_preference | <trait_object> [opt_sim] | Yes | Live | No | — | traits.gameplay_object_preference_commands:33 |
traits.remove_trait | <trait_type> [opt_sim] | Yes | Live | No | Removes a named trait from the Sim. | traits.trait_commands:50 |
traits.clear_gameplay_object_preferences | [opt_sim] | No | Automation | No | — | traits.gameplay_object_preference_commands:50 |
traits.clear_traits | [opt_sim] | No | Automation | No | — | traits.trait_commands:59 |
traits.show_traits | [opt_sim] | No | Automation | No | — | traits.trait_commands:24 |
traits.change_relationship_expectation_outlook_for_type | <relationship_expectation_type> [sim] | No | DebugOnly | No | — | traits.trait_commands:179 |
traits.dump_traits_with_commodities | none | No | DebugOnly | No | — | traits.trait_commands:163 |
traits.show_inherited_traits | [sim_a] [sim_b] | No | DebugOnly | No | — | traits.trait_commands:88 |
traits.show_traits_of_type | <trait_type> [sim] | No | DebugOnly | No | — | traits.trait_commands:111 |
Every usable row is live type, which the command table defines as registered and always callable. Not one trait command in the game is declared cheat type. Turn testingcheats true on anyway, because everything else you are likely to type in the same session needs it.
The 7 that do not work are 3 automation and 4 debug registrations. Debug commands are filtered out before register() in a shipped build; automation commands are driven through the game's QA channel rather than the console. No row in this section declares a pack code, so all fourteen are base game as far as their own registration goes.
The command that would have printed your trait names
traits.show_traits is the one you would want, and it is automation type. Its output strings are still in the file: Sim {} has {} traits equipped, {} slots left, then one Equipped: {} line per trait. A player cannot make it print any of that.
traits.show_traits_of_type and traits.show_inherited_traits are debug-only, and traits.dump_traits_with_commodities writes a TraitReport.txt that a retail build never generates because the command is debug-only too.
Clearing and bulk-equipping
traits.clear_personality_traits
[opt_sim] — empties the personality traits. Live type, traits.trait_commands:72. No registration in the build carries a description
traits.equip_all_traits_with_tag
<tag> [opt_sim] — adds every trait carrying a tag, in one call. traits.trait_commands:192
The tag variant walks every trait in the instance manager, keeps the ones carrying your tag, and calls add_trait on each. It is the fastest way to hand a Sim a whole category and the fastest way to make a mess, since every add still runs its own tuned loot.
Note what is missing from the usable set. traits.clear_traits, the one that clears everything rather than only personality traits, is automation type and does not run for a player.
Object preferences, filed under the same namespace
traits.equip_gameplay_object_preference
<trait_object> [preference_type] [opt_sim] — traits.gameplay_object_preference_commands:14
These two commands handle a Sim's likes and dislikes for object types rather than personality traits, which is why they surface in trait searches. The first argument is a trait reference again, and preference_type defaults to GameplayObjectPreferenceTypes.NONE. The removal side, traits.remove_gameplay_object_preference, drops the preference argument. Which references are valid is not stated in the registration, so this page prints the signature and stops.
What this page does not print
A trait list. Every page ranking for this query has one, and none of them can point at the file it came from.
The trait names live in the game's tuning resources, not in the Python this site extracts, so a name list here would be a transcription of someone else's transcription. Trying a wrong identifier only costs you the ten seconds it took to type, but a borrowed list gives you no way to tell which of its entries have gone stale. The commands above are proven to the line that registers them. The names will be published the same way or not at all.
Enabling cheats and typing them
testingcheats true
Not required by the trait commands themselves, but required by most of what you would run alongside them
Ctrl+Shift+C opens the console, and it is the same combination on Mac: the Control key, not Command. Command+Shift+C is a macOS shortcut that the game never sees, so a Mac player who reaches for it gets nothing back and concludes cheats are broken.
On PlayStation and Xbox, EA documents the cheat box as opening when all four shoulder buttons are held at once, with the note that a keyboard attached to a console still uses Ctrl+Shift+C. Trait commands are the worst case on a controller: the argument is a long identifier typed on an on-screen keyboard, and one wrong character gets you a No names matched line instead of the trait.
EA's cheat FAQ states that cheat codes requiring testingcheats true disable achievements and trophies in the save being played, other saves unaffected, with build mode cheats exempt.
Traits change how a Sim behaves, not what a Sim needs, so if the goal is a Sim who stops complaining the faster route is how to kill a sim on the sims 4. Editing the Sim itself, including in Create a Sim, is the cas cheat sims 4.
Common questions
What is the trait cheat in The Sims 4?
traits.equip_trait, registered at traits.trait_commands:41. It gives the Sim a named trait, a sentence we write from the code it calls rather than one the file carries. Its signature is a trait type, then an optional Sim, then an optional index into the personality list. With a Sim selected the optional Sim argument can be left off. traits.remove_trait at line 50 is its opposite and takes the trait plus the same optional Sim.
Why does traits.equip_trait say nothing happened?
Two different failures look the same. If the name resolves to nothing the console does say so, with No names matched, or it lists the candidates when a fragment is ambiguous. The genuinely silent case is the trait resolving fine and TraitTracker.can_add_trait then refusing it, which happens on a full personality slot list, a conflicting trait, or a trait the Sim's age or species is not allowed. The console prints nothing for that.
Do trait cheats need testingcheats true?
The seven usable trait commands are all declared live type, which the command table says is always callable, so on the data they are not gated behind the flag. Enable it anyway. It costs nothing, it is required for almost everything else you would type in the same session, and shift-clicking a Sim for the cheat menu needs it regardless.
Can I add more than the normal number of traits?
The command does not decide that. TraitTracker.can_add_trait does, and it refuses a trait when the personality slots are full, when the trait conflicts with one already equipped, when an exclusive set rules it out, or when the Sim's age, gender or species is not allowed for it. The slot count itself is tuned per age rather than fixed in code, so it is data, not a constant this page can quote.
Where is the full Sims 4 traits list?
Not on this page. A trait list is only useful if the identifiers are the ones the console accepts, and the trait tuning is not part of what this site has extracted from the build. The command that would dump the names, traits.show_traits, is registered as automation type and does not run for a player. Publishing a borrowed list would mean inheriting whichever entries in it are stale.
Is there a cheat to clear a Sim's traits?
traits.clear_personality_traits, at traits.trait_commands:72, taking only the optional Sim. It empties the personality traits. No registration in this build ships a description string, so that sentence is ours as well. The broader traits.clear_traits at line 59 is automation type and does not run for a player. There is no undo, so note down what a Sim had before running it.