After Effects quirks
Behaviours of After Effects itself that look like Prism failing: locked layers, temporal ease array sizes, match names, parenting time compensation, time remap keys, text stroke, and fonts.
Some failures are not Prism. They are After Effects behaving in ways that surprise everyone who scripts it, and the error text rarely says so. These have all been reported by real sessions.
A locked layer rejects writes
Can not set attribute "comment" on Layer "…" because the Layer is locked.
This applies to comment, guideLayer, and most other attributes. It fails mid-script, so
earlier steps have already run.
Unlock the layer, make the change, then re-lock it if it was locked deliberately. When building over a project you did not create, check
layer.lockedbefore writing.
Guide layers inherited from a template are the usual source: they are often locked on purpose and are easy to miss.
Temporal ease arrays and dimensions
Unable to call "setTemporalEaseAtKey" because of parameter 2. Value array does not have 1 elements.
After Effects expects the ease array to match the property's temporal dimension count, which is not always the number of values it holds:
| Property | Values | Ease array length |
|---|---|---|
| Opacity | 1 | 1 |
| Position (spatial) | 2 or 3 | 1 |
| Scale | 2 or 3 | 3 |
| Camera Point of Interest | 3 | 1 |
Getting this wrong throws, and the message names the size it wanted but not why.
Ask for eased keyframes rather than setting the array yourself. Prism's easing helper handles the dimension rules for every property type.
Match names are not the names you see
The internal identifier often differs from the label in the timeline, and some have changed across versions.
| What you want | Match name |
|---|---|
| Text properties | ADBE Text Properties — not ADBE Text |
| Shape layer contents | ADBE Vector Items Group |
| Effects on a layer | ADBE Effect Parade |
| Camera Point of Interest | Under the camera's own transform group, not the layer's |
ADBE Fast Blur Groupcannot be added on modern After Effects versions. Use Gaussian Blur instead.
Camera layers are the common trap: ADBE Point of Interest returns null when looked up under a
plain ADBE Transform Group.
Parenting moves the child
Assigning layer.parent compensates for the parent's transform at the current comp time. If
the parent already has keyframes, the child can jump.
To attach without moving, either set
parentwhile the parent transform is at its default, or use Prism's raw-parenting helper, which skips the compensation.
The same applies to null objects created away from the origin: the child re-roots into the parent's space and shifts.
Time Remap keys disappear on fresh footage
Adding a footage layer and immediately enabling time remapping can silently lose the keys.
Two rules make it reliable:
layer.property("ADBE Time Remap")is always null. Enable and key throughlayer.timeRemap.- Do not probe a freshly imported footage item's
widthordurationstraight after importing — it can crash the wrapper. Import, then re-find the item by id.
Text stroke
Two separate issues, both in After Effects itself:
- Reading
strokeColorthrows whenapplyStrokeis false. CheckapplyStrokebefore reading any stroke property. - After Effects 2026 applies a default stroke to new text, which eats into the glyphs and leaves letters looking thin or hollow. Ask for text with no stroke.
Fonts are PostScript names
After Effects matches fonts by PostScript name, which has no spaces:
| Font menu | Use |
|---|---|
| Helvetica Neue Bold | HelveticaNeue-Bold |
| Arial Black | Arial-Black |
A display name usually resolves to the wrong weight or silently falls back.
After Effects can quit while a script runs
Scrubbing the timeline while a scripted operation is in flight can crash After Effects outright. This is an After Effects fault and there is no way for Prism to prevent it.
While a request is running, let it finish before scrubbing or editing manually.
Some operations are simply intermittent
A few operations do not apply cleanly on the first attempt, independently of Prism. Layer styles are the known case.
Re-run the same request once. If it succeeds on the retry, that is the known intermittent behaviour rather than a configuration problem.
Related
- When Prism rejects your script: the checks that run before your script reaches After Effects.
- Known issues: open problems in Prism itself.
- Troubleshooting: connection checks.
When Prism rejects your script
Why Prism rejects a script before it reaches After Effects, and the exact fix for each case: the TypeScript gate, the result envelope rule, banned constructs, and template-literal number errors.
Known issues
Open problems in Prism for After Effects, each with a workaround: snapshot comp switching, panel reconnection, long AI generations, AI-generated H.264 footage, transcription markers, and generated-image file paths.