Skip to content

grok 4.5 failed to successfully call the edit tool #156

Description

@fantastlcok

Short description

error: could not determine executable to run for package @cortexkit/aft-opencode

What happened?

Expected:

Successfully edit text using AFT's edit tool.

Observed issues:

grok 4.5 is unable to successfully edit files using AFT's edit.
It seems impossible to pass both the oldString and newString parameters at the same time.
Tried various methods.
Had the model first outline the call parameters, reflect on them, and then make the call. -> Failed
Had GLM successfully make the call once within the context, then switched to grok 4.5 and had grok make the call. -> Failed

After uninstalling the AFT plugin, grok successfully calls edit to modify the text without errors.

Reproduction

After installing the AFT plugin in opencode, use Build mode to have grok 4.5 modify a line in the md file to new content.

Environment

  • AFT CLI: v0.46.0
  • AFT binary: 0.46.0
  • OS: linux x64
  • Node: v24.14.0
  • Session: ses_0b354e978ffe9GHKwn06puj7V0 (test edit)

Diagnostics

  • Timestamp: 2026-07-10T15:50:28.086Z
  • AFT CLI: v0.46.0
  • AFT binary: 0.46.0
  • OS: linux x64
  • Node: v24.14.0

OpenCode

  • Host installed: true
  • Host version: 1.17.18
  • Plugin registered: true
  • Plugin version: 0.46.0
  • AFT enabled: true
  • AFT config parse error: none

Config paths

{
  "configDir": "~/.config/opencode",
  "harnessConfig": "~/.config/opencode/opencode.jsonc",
  "harnessConfigFormat": "jsonc",
  "aftConfig": "~/.config/cortexkit/aft.jsonc",
  "aftConfigFormat": "jsonc",
  "tuiConfig": "~/.config/opencode/tui.json",
  "tuiConfigFormat": "json"
}

AFT flags

{
  "$schema": "https://raw.githubusercontent.com/cortexkit/aft/main/assets/aft.schema.json",
  "search_index": true
}

Plugin cache

{
  "path": "~/.cache/opencode/packages/@cortexkit/aft-opencode@latest",
  "cached": "0.46.0",
  "latest": "0.46.0",
  "exists": true
}

Storage

{
  "path": "~/.local/share/cortexkit/aft",
  "exists": true,
  "accessible": true,
  "sizesByKey": {
    "index": 75356334,
    "semantic": 0,
    "backups": 0,
    "url_cache": 0,
    "onnxruntime": 0
  }
}

ONNX Runtime

{
  "required": false,
  "systemPath": null,
  "systemVersion": null,
  "systemCompatible": null,
  "cachedPath": null,
  "cachedVersion": null,
  "cachedCompatible": null,
  "platform": "linux-x64",
  "installHint": "AFT auto-downloads ONNX Runtime on supported Linux (glibc)",
  "requirement": ">=1.20"
}

Log file

/tmp/aft-plugin.log (3585 KB)

Binary cache

{
  "versions": [
    "v0.39.4",
    "v0.40.1",
    "v0.40.2",
    "v0.40.3",
    "v0.41.0",
    "v0.42.0",
    "v0.43.1",
    "v0.44.0",
    "v0.45.0",
    "v0.45.1",
    "v0.46.0"
  ],
  "activeVersion": "v0.46.0",
  "totalSize": 776312064,
  "path": "~/.cache/aft/bin"
}

LSP cache

{
  "npm": {
    "path": "~/.cache/aft/lsp-packages",
    "entries": [
      {
        "name": "intelephense",
        "path": "~/.cache/aft/lsp-packages/intelephense",
        "size": 133268378
      },
      {
        "name": "@biomejs/biome",
        "path": "~/.cache/aft/lsp-packages/%40biomejs%2Fbiome",
        "size": 63753221
      },
      {
        "name": "@vue/language-server",
        "path": "~/.cache/aft/lsp-packages/%40vue%2Flanguage-server",
        "size": 48002855
      },
      {
        "name": "pyright",
        "path": "~/.cache/aft/lsp-packages/pyright",
        "size": 19286299
      },
      {
        "name": "yaml-language-server",
        "path": "~/.cache/aft/lsp-packages/yaml-language-server",
        "size": 18337425
      },
      {
        "name": "bash-language-server",
        "path": "~/.cache/aft/lsp-packages/bash-language-server",
        "size": 14513989
      },
      {
        "name": "typescript-language-server",
        "path": "~/.cache/aft/lsp-packages/typescript-language-server",
        "size": 3226478
      },
      {
        "name": "dockerfile-language-server-nodejs",
        "path": "~/.cache/aft/lsp-packages/dockerfile-language-server-nodejs",
        "size": 2464632
      },
      {
        "name": "clangd/clangd",
        "path": "~/.cache/aft/lsp-packages/clangd%2Fclangd",
        "size": 79
      }
    ],
    "totalSize": 302853356
  },
  "github": {
    "path": "~/.cache/aft/lsp-binaries",
    "entries": [
      {
        "name": "clangd",
        "path": "~/.cache/aft/lsp-binaries/clangd",
        "size": 373473970
      }
    ],
    "totalSize": 373473970
  },
  "totalSize": 676327326
}

Recent errors (last 20, sanitized)

[2026-07-07T11:16:06.291Z] ERROR [aft-plugin] [lsp] extract clangd failed: Error: Executable not found in $PATH: "unzip"

Recent AFT tool failures

  • status: timed out after 5000ms ×10
  • error: ERROR log line ×3
  • spawn: failed to spawn ×2

Logs (last 200 lines per harness)

OpenCode log (/tmp/aft-plugin.log)

[2026-07-10T15:12:14.372Z] INFO [aft-plugin] [aft] acquired filesystem <USER> at ~/.local/share/cortexkit/aft/index/9a051fd9ab7cdfc6/cache.<USER>
[2026-07-10T15:12:14.476Z] INFO [aft-plugin] [aft] search index cold streaming build: 389 files, 48812 trigrams, 103 ms (pool=8)
[2026-07-10T15:12:14.535Z] INFO [aft-plugin] [aft] released filesystem <USER> at ~/.local/share/cortexkit/aft/index/9a051fd9ab7cdfc6/cache.<USER>
[2026-07-10T15:12:14.623Z] INFO [aft-plugin] [aft] acquired filesystem <USER> at ~/.local/share/cortexkit/aft/index/9a051fd9ab7cdfc6/cache.<USER>
[2026-07-10T15:12:14.727Z] INFO [aft-plugin] [aft] search index cold streaming build: 389 files, 48812 trigrams, 104 ms (pool=8)
[2026-07-10T15:12:14.788Z] INFO [aft-plugin] [aft] released filesystem <USER> at ~/.local/share/cortexkit/aft/index/9a051fd9ab7cdfc6/cache.<USER>
[2026-07-10T15:13:25.179Z] INFO [aft-plugin] [aft] tier2 dead_code: refreshed callgraph store at ~/.local/share/cortexkit/aft/opencode/callgraph for 1 watcher path(s): changed=1 deleted=0 refreshed_own=1
[2026-07-10T15:13:25.259Z] INFO [aft-plugin] [aft] perf tier2_callgraph_snapshot: source=callgraph_store files=373 exports=0 edges=15397 entry_points=1 ms=149
[2026-07-10T15:13:25.511Z] INFO [aft-plugin] [aft] perf tier2 phases category=dead_code freshness=7ms snapshot=156ms scan=100ms(1 files) db=24ms rollup=117ms
[2026-07-10T15:13:25.511Z] INFO [aft-plugin] [aft] perf tier2 category=dead_code reuse=miss ms=423
[2026-07-10T15:13:25.662Z] INFO [aft-plugin] [aft] perf tier2 phases category=unused_exports freshness=7ms snapshot=0ms scan=65ms(1 files) db=25ms rollup=44ms
[2026-07-10T15:13:25.662Z] INFO [aft-plugin] [aft] perf tier2 category=unused_exports reuse=miss ms=158
[2026-07-10T15:13:25.719Z] INFO [aft-plugin] [aft] perf tier2 category=duplicates reuse=miss ms=56
[2026-07-10T15:13:25.810Z] INFO [aft-plugin] [aft] perf tier2 phases category=cycles freshness=7ms snapshot=0ms scan=32ms(373 files) db=26ms rollup=0ms
[2026-07-10T15:13:25.810Z] INFO [aft-plugin] [aft] perf tier2 category=cycles reuse=miss ms=85
[2026-07-10T15:18:25.186Z] INFO [aft-plugin] [aft] tier2 dead_code: refreshed callgraph store at ~/.local/share/cortexkit/aft/opencode/callgraph for 1 watcher path(s): changed=1 deleted=0 refreshed_own=1
[2026-07-10T15:18:25.256Z] INFO [aft-plugin] [aft] perf tier2_callgraph_snapshot: source=callgraph_store files=373 exports=0 edges=15397 entry_points=1 ms=153
[2026-07-10T15:18:25.530Z] INFO [aft-plugin] [aft] perf tier2 phases category=dead_code freshness=1ms snapshot=163ms scan=104ms(1 files) db=25ms rollup=131ms
[2026-07-10T15:18:25.530Z] INFO [aft-plugin] [aft] perf tier2 category=dead_code reuse=miss ms=443
[2026-07-10T15:18:25.681Z] INFO [aft-plugin] [aft] perf tier2 phases category=unused_exports freshness=1ms snapshot=0ms scan=62ms(1 files) db=23ms rollup=46ms
[2026-07-10T15:18:25.681Z] INFO [aft-plugin] [aft] perf tier2 category=unused_exports reuse=miss ms=151
[2026-07-10T15:18:25.730Z] INFO [aft-plugin] [aft] perf tier2 category=duplicates reuse=miss ms=48
[2026-07-10T15:18:25.805Z] INFO [aft-plugin] [aft] perf tier2 phases category=cycles freshness=1ms snapshot=0ms scan=26ms(1 files) db=23ms rollup=0ms
[2026-07-10T15:18:25.805Z] INFO [aft-plugin] [aft] perf tier2 category=cycles reuse=miss ms=71
[2026-07-10T15:26:27.080Z] INFO [aft-plugin] [aft] tier2 dead_code: refreshed callgraph store at ~/.local/share/cortexkit/aft/opencode/callgraph for 1 watcher path(s): changed=1 deleted=0 refreshed_own=1
[2026-07-10T15:26:27.149Z] INFO [aft-plugin] [aft] perf tier2_callgraph_snapshot: source=callgraph_store files=373 exports=0 edges=15397 entry_points=1 ms=178
[2026-07-10T15:26:27.460Z] INFO [aft-plugin] [aft] perf tier2 phases category=dead_code freshness=1ms snapshot=188ms scan=97ms(1 files) db=27ms rollup=176ms
[2026-07-10T15:26:27.461Z] INFO [aft-plugin] [aft] perf tier2 category=dead_code reuse=miss ms=519
[2026-07-10T15:26:27.615Z] INFO [aft-plugin] [aft] perf tier2 phases category=unused_exports freshness=1ms snapshot=0ms scan=64ms(1 files) db=23ms rollup=44ms
[2026-07-10T15:26:27.615Z] INFO [aft-plugin] [aft] perf tier2 category=unused_exports reuse=miss ms=153
[2026-07-10T15:26:27.683Z] INFO [aft-plugin] [aft] perf tier2 category=duplicates reuse=miss ms=67
[2026-07-10T15:26:27.757Z] INFO [aft-plugin] [aft] perf tier2 category=cycles reuse=miss ms=69
[2026-07-10T15:32:35.850Z] INFO [aft-plugin] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-07-10T15:32:35.851Z] INFO [aft-plugin] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-07-10T15:32:35.854Z] INFO [aft-plugin] Resolved binary: ~/.cache/aft/bin/v0.46.0/aft
[2026-07-10T15:32:35.855Z] INFO [aft-plugin] AFT storage migration skipped for opencode: no legacy data at ~/.local/share/opencode/storage/plugin/aft; using ~/.local/share/cortexkit/aft for fresh install
[2026-07-10T15:32:36.088Z] INFO [aft-plugin] [lsp] auto-install: 4 npm + 0 github install(s) running in background
[2026-07-10T15:32:36.097Z] INFO [aft-plugin] RPC server listening on 127.0.0.1:40599
[2026-07-10T15:32:36.108Z] INFO [aft-plugin] Workflow hints injected (4307 chars)
[2026-07-10T15:32:42.186Z] INFO [aft-plugin] [auto-update-checker] Already on latest version for channel: latest
[2026-07-10T15:32:51.754Z] INFO [aft-plugin] bridge.spawnProcess: useFastembedBackend=true, parentORT=(unset), ortLibraryPath=(none)
[2026-07-10T15:32:51.822Z] INFO [aft-plugin] [aft] started, pid 75527
[2026-07-10T15:32:51.929Z] INFO [aft-plugin] Binary version: 0.46.0
[2026-07-10T15:32:51.997Z] INFO [aft-plugin] [aft] watcher started: <PROJECT>
[2026-07-10T15:34:22.129Z] INFO [aft-plugin] [aft] tier2 dead_code: refreshed callgraph store at ~/.local/share/cortexkit/aft/opencode/callgraph for 1 watcher path(s): changed=1 deleted=0 refreshed_own=1
[2026-07-10T15:34:22.204Z] INFO [aft-plugin] [aft] perf tier2_callgraph_snapshot: source=callgraph_store files=373 exports=0 edges=15397 entry_points=1 ms=175
[2026-07-10T15:34:22.462Z] INFO [aft-plugin] [aft] perf tier2 phases category=dead_code freshness=1ms snapshot=175ms scan=115ms(1 files) db=23ms rollup=119ms
[2026-07-10T15:34:22.463Z] INFO [aft-plugin] [aft] perf tier2 category=dead_code reuse=miss ms=461
[2026-07-10T15:34:22.615Z] INFO [aft-plugin] [aft] perf tier2 phases category=unused_exports freshness=1ms snapshot=0ms scan=61ms(1 files) db=23ms rollup=46ms
[2026-07-10T15:34:22.615Z] INFO [aft-plugin] [aft] perf tier2 category=unused_exports reuse=miss ms=150
[2026-07-10T15:34:22.684Z] INFO [aft-plugin] [aft] perf tier2 category=duplicates reuse=miss ms=68
[2026-07-10T15:34:22.760Z] INFO [aft-plugin] [aft] perf tier2 category=cycles reuse=miss ms=70
[2026-07-10T15:39:59.689Z] INFO [aft-plugin] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-07-10T15:39:59.690Z] INFO [aft-plugin] Config loaded from ~/.config/cortexkit/aft.jsonc
[2026-07-10T15:39:59.694Z] INFO [aft-plugin] Resolved binary: ~/.cache/aft/bin/v0.46.0/aft
[2026-07-10T15:39:59.694Z] INFO [aft-plugin] AFT storage migration skipped for opencode: no legacy data at ~/.local/share/opencode/storage/plugin/aft; using ~/.local/share/cortexkit/aft for fresh install
[2026-07-10T15:39:59.866Z] INFO [aft-plugin] [lsp] auto-install: 4 npm + 0 github install(s) running in background
[2026-07-10T15:39:59.874Z] INFO [aft-plugin] RPC server listening on 127.0.0.1:33977
[2026-07-10T15:39:59.885Z] INFO [aft-plugin] Workflow hints injected (4307 chars)
[2026-07-10T15:40:04.885Z] INFO [aft-plugin] [auto-update-checker] Skipping check (another instance ran one recently)

Usernames and home paths have been stripped from this report.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions