When to Trust Prompt Expansion (and When to Lock It)
Wan 2.7 rewrites your prompt by default. A simple log-then-lock protocol preserves speed without losing control.
Wan 2.7 has a feature most people never turn off: enable_prompt_expansion. It is on by default. Your prompt goes in, gets rewritten by an LLM into a longer cinematic description, and the rewritten version is what the sampler actually sees.
For most work this is fine. For some work it is a quiet problem. Here is a way to keep the speed without losing control.

Log it first, argue later
The response from Wan 2.7 includes an actual_prompt field. That is the expanded version the model used. Log it on every call.
1import fal_client, json23result = fal_client.subscribe(4 "fal-ai/wan/v2.7/text-to-video",5 arguments={6 "prompt": "a tired construction worker sits on a steel beam at sunset",7 "duration": 5,8 "aspect_ratio": "16:9",9 "enable_prompt_expansion": True,10 },11)1213print(json.dumps({14 "input_prompt": "a tired construction worker sits on a steel beam at sunset",15 "actual_prompt": result.get("actual_prompt"),16 "seed": result["seed"],17 "url": result["video"]["url"],18}, indent=2))
Read ten of those logs side by side. You will see patterns. Expansion adds adjectives. It adds lighting language. It sometimes adds things that are plain wrong for your scene, like "smiling warmly" when you wanted tired.
When expansion helps
Short prompts, exploratory work, prompts written by non technical collaborators. Expansion is an autocomplete for cinematic detail you forgot to include. For ads and first passes, leave it on.
When to lock it
Brand work where a client approved a specific prompt. Keep the prompt they signed off on, do not let the model rewrite it.
A/B testing where you want to isolate one variable. Expansion is noise you did not ask for.
Multi shot sequences where you need consistent language across shots. Expansion rewrites differently each time, and rewrite drift becomes visual drift.
Reproducibility. Locked expansion is one less random variable.
How to lock cleanly
Take the expanded prompt from a good render. Paste it in as your next prompt. Set enable_prompt_expansion to False. Now you have the cinematic detail and no rewrite on top.
1locked_prompt = (2 "A weathered construction worker in a dusty high visibility vest sits "3 "on a steel I-beam against an orange and pink sunset sky, the silhouette "4 "of the unfinished skyscraper behind him, shot on a 35mm lens, slow "5 "push in, warm golden hour light, shallow depth of field"6)78result = fal_client.subscribe(9 "fal-ai/wan/v2.7/text-to-video",10 arguments={11 "prompt": locked_prompt,12 "enable_prompt_expansion": False,13 "seed": 44219,14 "duration": 5,15 },16)

The protocol
Run with expansion on until you get a clip you like. Copy the actual_prompt from that response. Turn expansion off. Use the copied prompt for the production render.
This gives you the discovery speed of expansion and the lock of a verbatim prompt. It costs you nothing at Wan 2.7 pricing since you would have run the exploration renders anyway. The final lock is the one that ships.