CodeFizz
ToolsDemoDocsRoadmapChangelogPricingFAQ
Get the plugin

Getting Started

  • Introduction
  • Quick Start
  • Requirements
  • Installing the CLI
  • License & Machines

Guides

  • Installing the Plugin
  • The AI Skill
  • CLI vs MCP
  • Multiple Editors
  • How It Works
  • Discovering Commands

Walkthroughs

  • Build a Blueprint with AI
  • Author a Material Graph
  • Create a Niagara System

Reference

  • Reference
  • Niagara
  • PCG
  • Materials
  • StateTree
  • Sequencer
  • Level Actors
  • Project Settings
  • Blueprints
  • Blueprint Structs
  • Enhanced Input
  • Asset Management
  • Bulk Asset Ops
  • Data Assets
  • Object Properties
  • UMG Widgets
  • Data Tables
  • Curves
  • Console Commands
  • Profiling
  • Core
  • Debug

Help

  • FAQ
  • Troubleshooting
  • For AI Agents
DocsReferenceProfiling

Profiling

Every Profiling command in CodeFizz Editor Agent, with parameters and examples.

Loading…
PreviousConsole CommandsNextCore
CodeFizz

A drop-in Unreal Engine 5 plugin that exposes the entire editor surface (Blueprints, Materials, Niagara, PCG, StateTree, Insights profiling, and more) over the Model Context Protocol. Connect Claude Code, Cursor, VS Code, or any MCP-compatible client and let your AI build inside the engine.

Product

  • Features
  • Docs
  • Tools
  • Demo
  • Roadmap
  • Changelog
  • Pricing
  • FAQ

Resources

  • Install guide
  • Discord
  • YouTube
  • Open-source edition
  • Manage subscription

Legal

  • Refund Policy
  • Privacy Policy
  • Terms of Service

© 2026 CodeFizz. All rights reserved.

CodeFizz Editor Agent is a CodeFizz product. Payments processed by Polar Software, Inc. (Polar), the Merchant of Record.

11 commands. Each shows its parameters and an example, and has a copyable deep link, so you (or an AI agent) can jump straight to one.

performance_start_trace

Start recording a live.utrace from the running editor

Requires UE 5.7+ (all profiling commands do, on a 5.6 editor they return an explanatory error). Begins recording a Unreal Insights.utrace from the running editor. Pick what to capture with `preset` (a goal-oriented channel group) and/or `channels` (comma-separated channel names or preset names, combined and de-duped). Run performance_list_channels first to discover every channel the running engine has (engine + custom) and the available presets. Unknown channel names are reported back in `ignored_unknown_channels`. Presets: default, cpu, gpu, render, memory, loading, network, tasks, sampling, animation, jiggi. Set connection=network to stream live to Unreal Insights instead of a file. Stop with performance_stop_trace.

ParameterTypeRequiredDescription
file_pathstringNoOutput file path for connection=file (empty = auto)
presetstringNoInvestigation preset: default,cpu,gpu,render,memory,loading,network,tasks,sampling,animation,jiggi
channelsstringNoChannel names and/or preset names, comma-separated (combined with preset). Empty + no preset = engine 'default'
connectionstringNofile (write.utrace) or network (live stream to Unreal Insights)
targetstringNoHost for connection=network (default 127.0.0.1)
exclude_tailboolNoExclude the in-memory tail of important events (smaller trace)
stat_named_eventsboolNoEnable named events (stats.NamedEvents on) so CPU scopes capture stat names
example
cfa performance_start_trace --preset jiggi
cfa performance_start_trace --preset memory --exclude-tail
cfa performance_start_trace --channels "cpu,gpu,frame,mass,niagara"
cfa performance_start_trace --connection network --target 127.0.0.1 --preset cpu
cfa performance_start_trace --file-path "C:/Traces/my.utrace" --channels "loading,counters"
performance_stop_trace

Stop recording and optionally auto-load for analysis

Stops the active trace recording. When auto_load is true (default), the trace is immediately loaded for analysis so you can run performance_analyze_insight queries against it without a separate load step.

ParameterTypeRequiredDescription
auto_loadboolNoAuto-load trace for analysis
example
cfa performance_stop_trace
cfa performance_stop_trace --auto-load=false
performance_analyze_insight

Analyze a performance trace (diagnose, spikes, flame, hotpath, etc.)

Requires UE 5.7+ ('objects' query needs 5.8). Runs analysis queries against a loaded.utrace file. The recommended workflow is: (1) performance_start_trace to record, (2) performance_stop_trace to stop and auto-load, (3) performance_analyze_insight with query="diagnose" for a full automatic report, then drill down with "spikes", "flame", "hotpath", or "search" as needed. Use query="load" with trace_path to analyze a previously saved trace. The "diagnose" query returns a one-call verdict with severity findings, category breakdown, and top bottlenecks. The "flame" query shows timers by exclusive (self) time to find actual CPU-consuming code. The "search" query finds a specific timer across all frames with min/avg/max/p95/p99 stats.

ParameterTypeRequiredDescription
querystringYesQuery type: diagnose, bound, breakdown, calltree, gpu_sync, gpu_passes, inspect_frame, gc, hitch_cause, memory_growth, critical_path, objectproperties, spikes, flame, bottlenecks, hotpath, compare, compare_traces, search, histogram, load, summary, worst_frames, frame_details, timer_stats, butterfly, threads, counters, counter_series, csv, between, net_stats, net_packets, net_objects, loading, logs, memory, memory_series, alloc_query, stack_tree, cook, trace_channels, animation, mass, iostore, chaos_locks, render_trace (5.8+), world_streaming (5.8+), regions, bookmarks, session, modules, file_io, tasks, context_switches, allocations, stack_samples, screenshots, objects (5.8+)
trace_pathstringNoPath to.utrace file (for 'load' query)
frame_indexintNoFrame index
countintNoResult count
threshold_msfloatNoTime threshold in ms
max_depthintNoMax depth
min_duration_msfloatNoMin duration filter
thread_namestringNoThread name filter
threadstringNoThread filter (alias)
filterstringNoName filter
start_timefloatNoStart time in seconds
end_timefloatNoEnd time in seconds
include_valuesboolNoInclude counter values
max_samplesintNoMax samples
timer_namestringNoTimer name (for butterfly query)
modestringNoMode (callers/callees/both)
connection_indexintNoNetwork connection index
verbositystringNoLog verbosity filter
trackerintNoMemory tracker index
target_fpsfloatNoTarget FPS for analysis (diagnose/bound)
categorystringNoCategory filter
event_namestringNoEvent name filter
min_deviation_pctfloatNoMin deviation percentage
bucket_size_msfloatNoHistogram bucket size
snapshot_indexintNoSnapshot index for the 'objects' query (-1 = latest)
skip_framesintNoWarmup frames to skip for 'bound' (-1 = auto-detect startup spikes)
warmup_secondsfloatNoSkip frames in the first N seconds for 'bound' (warmup window)
skip_waitsboolNoFor 'calltree': skip Wait/Idle children in the hot path to land on the real work leaf
objectstringNoFor 'objectproperties': traced object name (substring). Omit to list traced objects
object_idstringNoFor 'objectproperties': trace object id (the trace_object_id string from performance_trace_object, or from traced_objects). Direct-reads the property timeline by id.
propertystringNoFor 'objectproperties': a property name (substring) → returns its value time series
namestringNoFor 'counter_series': counter name (substring, case-insensitive). Omit to list all counters
fromstringNoFor 'between': start anchor, a bookmark name (substring) or a seconds value
tostringNoFor 'between': end anchor, a bookmark name (substring) or a seconds value
capture_idintNoFor 'csv': capture id to read (-1 = first capture)
queuestringNoFor 'gpu_passes': GPU queue filter (e.g. Graphics, Compute)
wait_secondsfloatNoFor 'compare_traces'/'alloc_query': max seconds to wait for results (blocks the editor; max 60)
rulestringNoFor 'alloc_query': allocation rule, aAf (live at A), AaBf (growth A..B), AaBCf (leaks), AafB (short-living), aABf (long-living)...
time_afloatNoFor 'alloc_query': time marker A in seconds (default: trace end)
time_bfloatNoFor 'alloc_query': time marker B in seconds
time_cfloatNoFor 'alloc_query': time marker C in seconds
time_dfloatNoFor 'alloc_query': time marker D in seconds
directionstringNoFor 'net_packets'/'net_objects': out or in
packet_startintNoFor 'net_objects': first packet index of the analysis window
packet_countintNoFor 'net_objects': packets to analyze from packet_start
viewstringNoFor 'animation': overview, tickrecords, graph, notifies, montages (with --object; omit --object to list animated objects)
enable_analyzerboolNoFor 'render_trace': opt in to the RenderTrace analyzer (disabled by default, a UE 5.8 engine bug can crash the editor on mid-session traces)
example
cfa performance_analyze_insight --query diagnose
cfa performance_analyze_insight --query bound --target-fps 60
cfa performance_analyze_insight --query bound --skip-frames 30
cfa performance_analyze_insight --query breakdown --thread GPU --count 15
cfa performance_analyze_insight --query breakdown --thread GameThread
cfa performance_analyze_insight --query calltree --timer-name "FTickFunctionTask" --max-depth 8
cfa performance_analyze_insight --query calltree --timer-name "FEngineLoop::Tick" --thread GameThread --skip-waits
cfa performance_analyze_insight --query gpu_sync
cfa performance_analyze_insight --query gpu_passes --count 20
cfa performance_analyze_insight --query gpu_passes --filter Shadow
cfa performance_analyze_insight --query inspect_frame --frame-index 137
cfa performance_analyze_insight --query objectproperties
cfa performance_analyze_insight --query objectproperties --object BP_Miner --property StoredAmount
cfa performance_analyze_insight --query counter_series
cfa performance_analyze_insight --query counter_series --name "DrawCall" --count 200
cfa performance_analyze_insight --query between --from MARK_A --to MARK_B
cfa performance_analyze_insight --query between --from 5 --to 10 --count 15
cfa performance_analyze_insight --query gc
cfa performance_analyze_insight --query hitch_cause
cfa performance_analyze_insight --query hitch_cause --frame-index 137
cfa performance_analyze_insight --query csv
cfa performance_analyze_insight --query csv --filter DrawCalls --count 200
cfa performance_analyze_insight --query compare_traces --trace-path "C:/Traces/after.utrace"
cfa performance_analyze_insight --query memory_growth --count 15
cfa performance_analyze_insight --query critical_path
cfa performance_analyze_insight --query critical_path --frame-index 137
cfa performance_analyze_insight --query load --trace-path "C:/Traces/my_trace.utrace"
cfa performance_analyze_insight --query spikes --count 5 --target-fps 60
cfa performance_analyze_insight --query flame --count 10 --thread GameThread
cfa performance_analyze_insight --query hotpath --frame-index 42 --category Animation
cfa performance_analyze_insight --query search --filter "ConveyorProcessor" --count 10
cfa performance_analyze_insight --query butterfly --timer-name "MassProcessor" --mode both
cfa performance_analyze_insight --query frame_details --frame-index 100 --max-depth 5 --min-duration-ms 0.5
performance_list_channels

List every trace channel the running engine has (engine + custom) plus presets

Enumerates all trace channels registered in the running editor, engine channels AND any custom channels defined by plugins, each with its enabled state, category, cost, a one-line summary, and when to use it. Also returns the named investigation presets. Run this BEFORE performance_start_trace to decide exactly what to capture for a target. Filter by name/desc substring, by category (CPU, GPU, Memory, Loading, Network, Gameplay...), or show only currently-enabled channels.

ParameterTypeRequiredDescription
filterstringNoSubstring match on channel name or description
categorystringNoFilter by category (CPU, GPU, Memory, Loading, Network, Gameplay, UI, Physics, Core...)
enabled_onlyboolNoOnly channels currently enabled
include_presetsboolNoInclude the investigation presets in the output
example
cfa performance_list_channels
cfa performance_list_channels --category Memory
cfa performance_list_channels --filter mass
cfa performance_list_channels --enabled-only
performance_toggle_channel

Enable or disable a trace channel at runtime (mid-trace)

Enables or disables a single trace channel on the running engine without restarting the trace. Use it to add a channel mid-session once you've narrowed down a suspect, or to drop an expensive channel. Channel name is matched leniently (case-insensitive, optional 'Channel' suffix).

ParameterTypeRequiredDescription
channelstringYesChannel name (e.g. cpu, mass, memalloc)
enabledboolNotrue to enable, false to disable
example
cfa performance_toggle_channel --channel mass
cfa performance_toggle_channel --channel memalloc --enabled=false
performance_trace_bookmark

Insert a named bookmark into the live trace timeline

Emits a named bookmark into the active trace so you can mark exactly when something happened (e.g. 'spawned 10k belts') and find it later in performance_analyze_insight --query bookmarks. Only recorded while a trace is active with the 'bookmark' channel enabled.

ParameterTypeRequiredDescription
namestringYesBookmark label
example
cfa performance_trace_bookmark --name "spawned 10k belts"
performance_trace_snapshot

Write a trace snapshot (tail buffer) to a.utrace file

Writes the current in-memory trace tail to a.utrace file without stopping the recording. Useful to capture the moments leading up to a spike you just saw. Leave file_path empty for an auto-generated path under the project's Profiling directory.

ParameterTypeRequiredDescription
file_pathstringNoOutput snapshot path (empty = auto)
example
cfa performance_trace_snapshot
cfa performance_trace_snapshot --file-path "C:/Traces/spike.utrace"
performance_trace_screenshot

Capture a screenshot into the live trace

Requests a screenshot to be embedded into the active trace on the next frame, so you can visually correlate the viewport with a timing spike in Unreal Insights. Needs an active trace with the 'screenshot' channel enabled.

ParameterTypeRequiredDescription
namestringNoScreenshot label (default CFA_Screenshot)
show_uiboolNoInclude editor UI in the capture
example
cfa performance_trace_screenshot --name "before-spike"
performance_trace_object

Register UObject(s) for per-frame property tracing (objectproperties query)

Registers actors (matched by name and/or class in the editor/PIE world) so the trace records their UObject property values every frame, and enables the 'object' + 'objectproperties' channels. Object-property tracing is opt-in per object, nothing is recorded until you register. After registering, record (or keep recording) a trace, then read the values back with performance_analyze_insight --query objectproperties --object <name>. Pass --enabled=false to unregister.

ParameterTypeRequiredDescription
namestringNoActor label/name substring to match
classstringNoClass-name substring to match (combine with name to narrow)
enabledboolNotrue to register for tracing, false to unregister
countintNoMax objects to register
example
cfa performance_trace_object --name BP_Miner
cfa performance_trace_object --class StaticMeshActor --count 5
cfa performance_trace_object --name BP_Miner --enabled=false
performance_live_start

Start sampling live per-frame timing (no trace needed)

Begins sampling the engine's per-frame timing counters every frame (frame time plus game/render/rhi/gpu thread ms) via FCoreDelegates::OnEndFrame. No trace and no 'stat unit' are needed, it reads the always-fresh engine counters directly. Let the editor or PIE run for a while, then call performance_live_stop to get the distribution across all sampled frames (min/avg/max/p50/p95/p99 + avg and 1%-low fps), so a single biased frame can't mislead. Sampling self-stops at --max-frames.

ParameterTypeRequiredDescription
max_framesintNoStop sampling automatically after this many frames
example
cfa performance_live_start
cfa performance_live_start --max-frames 600
performance_live_stop

Stop live sampling and return the multi-frame timing distribution

Stops the live sampler started by performance_live_start and returns the distribution over all sampled frames: for frame time and each of game/render/rhi/gpu thread ms, the min/avg/max/p50/p95/p99, plus avg fps and 1%-low fps (1000 / p99 frame ms, worst-case smoothness). frame_ms reflects displayed frame time (vsync / t.MaxFPS / editor throttle capped); the thread and gpu ms show the actual per-thread work.

example
cfa performance_live_stop