eda-agent (salitronic) errors

36 recurring problems engineers report in eda-agent (salitronic), ranked by impact.

#7 by errors trackedECAD

Recurring eda-agent (salitronic) errors, by impact

  1. 1"IPCB_LayerStack_V7.InsertInStackAbove / Below on a layer already in the stack leaves it where it is, with no error." The fix goes through the stack manager's own move. Because every move applies the manager's copy to the board, the tool now refuses to move while the two copies disagree, since a move would write the stale values over the board. A silent no-op API is the same failure as a false pass. The author had to build the comparison from #187 first just to make moving a layer safe.ECAD · Agent failure · 1 report74
  2. 2"IPCB_LayerStack_V7.InsertInStackAbove / Below on a layer already in the stack leaves it where it is, with no error." The fix goes through the stack manager's own move. Because every move applies the manager's copy to the board, the tool now refuses to move while the two copies disagree, since a move would write the stale values over the board. A silent no-op API is the same failure as a false pass. The author had to build the comparison from #187 first just to make moving a layer safe.ECAD · Agent failure · 1 report74
  3. 3Altium MCP bridge: running eda-agent relaunch from a terminal without the MCP server's EDA_AGENT_WORKSPACE overwrites a machine-global pointer file with the default folder, so the restarted Altium script serves that folder while the MCP server keeps sending requests to the custom one; then the diagnosis calls it a dead loop when the script is healthy, just somewhere else. The agent's context about where the design lives got silently swapped during recovery.ECAD · Agent failure · 1 report74
  4. 4An Altium Designer 25.8 bridge for agents. The editor's Selection Filter also applies to a scripted `Prim.Selected := True`, and "for a type switched off there the assignment is silently refused." Every path that selects and then acts "does nothing for those types and still reports success," seen as "selected 51, removed 0" and select_objects returning a count with nothing selected. The fix turns the filter off around each programmatic selection and restores it.ECAD · Agent failure · 1 report74
  5. 5An Altium Designer 25.8 bridge for agents. The editor's Selection Filter also applies to a scripted `Prim.Selected := True`, and "for a type switched off there the assignment is silently refused." Every path that selects and then acts "does nothing for those types and still reports success," seen as "selected 51, removed 0" and select_objects returning a count with nothing selected. The fix turns the filter off around each programmatic selection and restores it.ECAD · Agent failure · 1 report74
  6. 6An Altium Designer 25.8 bridge for agents. The editor's Selection Filter also applies to a scripted `Prim.Selected := True`, and "for a type switched off there the assignment is silently refused." Every path that selects and then acts "does nothing for those types and still reports success," seen as "selected 51, removed 0" and select_objects returning a count with nothing selected. The fix turns the filter off around each programmatic selection and restores it.ECAD · Agent failure · 1 report74
  7. 7An Altium Designer 26.11 user driving eda-agent had to close the sheet, remove it from the project, move the file in a shell, re-add it, and edit the parent sheet symbol by hand to rename a sheet. After all that, proj_get_channels still left the sheet out until proj_load_sheets plus proj_force_recompile. The remove step also reported pruning another sheet's path, which reads as if a second document had been dropped. The agent has no single operation that keeps the project file, the sheet symbols and the compiled hierarchy in step.ECAD · Agent failure · 1 report74
  8. 8Every reply still says success / verified: true, because create_symbol's verified only proves the symbol resolves by name. Reproduced on Altium 25.8.1 with three IC symbols of 3, 5 and 7 pins: pins read back 0, 0 and 15. The same symbols made one call each came out right.ECAD · Agent failure · 1 report74
  9. 9obj_query with a document path as scope runs on whatever sheet is in front. Asked for PD Controller.SchDoc, every object came back tagged USB Hub.SchDoc, with no error. obj_modify and obj_delete take the same scope, so an edit aimed at one sheet can land on another.ECAD · Agent failure · 1 report74
  10. 10On Altium Designer 26.11, obj_delete removes a 3V3 power port and the sheet query agrees it is gone, but the compiled net still holds it, so the new net label GAUGE_ALRT pulls in every 3V3 port in the project (61 pins) and the 3V3 net disappears. Force-recompile does not clear it, only save, close and reopen does.ECAD · Agent failure · 1 report74
  11. 11The agent delete by type, layer or box also deletes the footprint's own STEP model, silently losing the part's 3D model.ECAD · Agent failure · 1 report74
  12. 12The board's layer objects and the Layer Stack Manager each hold a copy of the stack. "A script write to the board's stack (pcb_set_dielectric, pcb_modify_layer, a rebuild) does not reach it, and the manager goes on showing, and on its next apply writing back, the old values." There was no way to see that from a script. The new read-only tool compares both and reports out_of_step. Verified live on a real 8-layer board: after setting Dk 4.35, the manager still said 4. This is the cleanest example I've seen of two copies inside one vendor tool.ECAD · Agent failure · 1 report74
  13. 13The board's layer objects and the Layer Stack Manager each hold a copy of the stack. "A script write to the board's stack (pcb_set_dielectric, pcb_modify_layer, a rebuild) does not reach it, and the manager goes on showing, and on its next apply writing back, the old values." There was no way to see that from a script. The new read-only tool compares both and reports out_of_step. Verified live on a real 8-layer board: after setting Dk 4.35, the manager still said 4. This is the cleanest example I've seen of two copies inside one vendor tool.ECAD · Agent failure · 1 report74
  14. 14Through the agent's generic write layer, a port's CrossRef parameter, which Altium marks read-only, took a value write (wrong until the next compile). A Name write changed nothing and came back as success. Port Style values 1-3 and 5-7 read back as written but reset to 0 or 4 after save and reopen.ECAD · Agent failure · 1 report74
  15. 15With several Altium projects open and a SchDoc of project B in front, design_review_snapshot returned nets and unrouted from project A's board: 458 nets against project B's 32. The reply named the board in board_used but otherwise looked like a normal result.ECAD · Agent failure · 1 report74
  16. 16A bulk proj_add_sheet call with a SchLib focused returned success and added_to_project: true for four sheets. They were unsaved, had relative paths, did not show in the project's document list, and removing them was refused as NOT_A_MEMBER.ECAD · Agent failure · 1 report66
  17. 17A filtered hide of PCB labels in Altium Designer 21 left Altium unresponsive, with the trace stopping in the filtered component traversal before the snapshot finished.ECAD · Agent failure · 1 report66
  18. 18A port in a child sheet labelled CHILD_NET is really on PARENT_NET project-wide, but the agent's hierarchy read only gave the local name and no location, so it could not follow a net down the hierarchy or tell multi-channel copies apart.ECAD · Agent failure · 1 report66
  19. 19A user of an Altium Designer agent bridge reports two bugs in one handler. Setting a parameter the project already has stops the bridge script behind an empty Altium "Error" box, and every session's calls fail until someone presses OK and restarts the loop. Setting a new parameter reads back "verified: true", but it is not in the .PrjPcb file on disk, because adding a parameter does not mark the project modified. Meanwhile other modified documents get saved that the caller never asked to save. The agent was told the edit worked. It did not.ECAD · Agent failure · 1 report66
  20. 20A user running two Claude sessions against one Altium Designer reports they fight over the focused document. Session B's project open is refused as DOCUMENT_IN_USE because session A wrote to its own document in the last 10 minutes, even though opening a project changes nothing. Each session pins its document back to the front before every command, so focus keeps flipping. The guard only reads board_path, expect_file or file_path, so a tool that sends project_path or library_path gets checked against the other session's document. Once one session claims a document nothing hands it back, and the other is locked out for 10 minutes.ECAD · Agent failure · 1 report66
  21. 21An Altium agent bridge returns a silent blank for properties it cannot read, so a round rectangle whose corners were changed by hand reads exactly like a default one. An agent reading Altium through this cannot tell unknown from empty.ECAD · Agent failure · 1 report66
  22. 22An Altium agent tool found that a STEP body ignores its own StandoffHeight: the script wrote 25.59 mil and the file read it back, but the Properties panel still said 0 mm, because the panel shows a different field (MODEL.3D.DZ) that nothing had written; that explains a field report of a model sitting with its middle in the board.ECAD · Agent failure · 1 report66
  23. 23An Altium agent's foreground guard refused to click a menu while Altium was visibly in front, because Windows reports no foreground window during a pending activation.ECAD · Agent failure · 1 report66
  24. 24Asking an image for XSize raises Altium's modal 'Undeclared identifier: XSize' and stops the agent polling loop. An agent reading Altium through this bridge cannot tell unknown from empty, and one query halts the loop.ECAD · Agent failure · 1 report66
  25. 25Calling lib_add_footprint_pads with one plain SMD pad on a blank PcbLib throws an access violation in Altium 26.10, 3 of 3 times. Altium shows a modal access violation, the MCP polling call cannot complete, and Altium must be closed and restarted.ECAD · Agent failure · 1 report66
  26. 26Footprint primitives could not be made keepouts through the library API at all, and a plain region on the KeepOut layer was placed with no restrictions until a reload, so an agent-placed Altium keepout kept nothing out. The fix writes the flags and reads them back to confirm.ECAD · Agent failure · 1 report66
  27. 27On a project with signal harnesses, proj_get_hierarchy flagged about 30 harness members as entry_without_port and reported an I2C mismatch, while the compiled netlist shows the links exist. The reporter could not read harness objects at all, and sheet entries came back with an empty owner.ECAD · Agent failure · 1 report66
  28. 28RemoveLayerStackProvider halts the script on AD21.4.1.30, and without the refresh the live provider returns cached stack data. Reporter used a compatibility fork, so not a pristine upstream test.ECAD · Agent failure · 1 report66
  29. 29Same Altium bridge as last hour. #179 adds a clearance check for two objects so a script that places copper "wants to know how far apart they are and whether Altium's own clearance rule is met, without running a full DRC and parsing its report." Altium's Violation.Description reads empty on AD 25, so only a yes or no comes back. #183 swaps object counting to Altium's internal counter, 0.09 s instead of 5.44 s for 8722 tracks.ECAD · Agent failure · 1 report66
  30. 30Same user, same Altium bridge. The agent tools cannot place a schematic directive carrying a PCB design rule, because the transport splits on "=" and "|" and a rule value always contains "=". It also cannot repeat a parameter name, set the directive's name, or place a hidden parameter. Today's workaround is a placeholder value and then several modify calls, "and a directive that is wrong in between."ECAD · Agent failure · 1 report66
  31. 31StrToIntDef returns its default for 100.5, so a decimal-mil argument was replaced, not rounded, and about 60 more sites in PCB, schematic, library and DRC handlers still read whole mils.ECAD · Agent failure · 1 report66
  32. 32The agent polygon placer always repours at default settings before the caller can set hatch, grid or width, so every pour is done twice, about 10 s per hatched pour on a dense board and minutes on a 10-layer board.ECAD · Agent failure · 1 report66
  33. 33The Altium agent STEP standoff height was setting the wrong property, and a successful run only verifies XY. The fix sets the STEP model DZ before binding instead of the extruded-body StandoffHeight property, and the author says runtime success verifies XY only, not Z or layer assignment.ECAD · Agent failure · 1 report66
  34. 34The Altium agent's pad reader crashes on AD21 on an identifier that version does not have, and treating missing mask fields as zero would make DRC look clean.ECAD · Agent failure · 1 report66
  35. 35The Altium bridge's bulk geometry writer dumps every free primitive on every layer before each apply, costing 2.7 s per apply on a 10-layer board when the caller edits a few dozen tracks.ECAD · Agent failure · 1 report66
  36. 36The old SaveComponentWithLibrary call had stopped the AD21 scripting engine.ECAD · Agent failure · 1 report66

How it fails

  1. Agent failure36

Sourced from public community reports. Costs and delays on individual entries are modeled estimates, not measurements.