github feder-cr/AIHawk v0.42.0
0.42.0

3 hours ago

The owner watched the helper browser get opened, used and never closed. Measured
before touching anything, with the real model on a task that needs both
browsers: six runs out of six left support open at the end, and in the owner's
own sessions one conversation of 247 steps used it 29 times and never closed it.

Three origins, none of them the model:

  • The server's instructions never reached it. They are the one place the
    two-browser contract is written - what support is for, and that whoever
    opens it closes it - and the loop sent the system prompt and the tool
    descriptions and nothing else. The link keeps what the server says at
    initialize, and one function builds the system message from this build's
    prompt plus those instructions, refreshed at the start of every run, so a
    restored transcript and a fresh one carry the same current text. It was
    assembled by hand in two places and had the instructions in neither.

  • The end-of-turn sentence forbade the very call that closes the helper: "reply
    with the answer and do NOT call any more tools", at the exact moment the
    close should happen. The order is in the sentence now - close support if
    you opened it and nothing more needs it, then answer, then no more tools -
    without exception vocabulary, because an exception is what a model reaches
    for.

  • The API cuts every tool description at 1024 characters, and browser_open
    was 1996: the model read it ending mid-word inside the paragraph about
    profiles, and the one sentence about closing was past the cut.
    browser_click_at was over too. Both fit now, the contract comes first, and
    what was cut moved into comments for a reader of the source.

Measured after, same bench, same task, same model, six runs: support closed
before the answer in six, left open at the end in none. Every sequence ends
with browser_close support.

Gates: every description under the limit and identical to what the loop sends,
executed against the real server; browser_open names browser_close in its
first half; the loop puts the instructions in the one system message and
replaces them run to run; the brain hands the link's instructions to the loop;
the end-of-turn sentence closes before it answers and carries no loophole.

Don't miss a new AIHawk release

NewReleases is sending notifications on new releases.