BinaryNights Blog

ForkLift 4.2.6 is available

ForkLift 4 Czech localization and OpenSSH

Switching Back to OpenSSH for SFTP

We introduced a significant change in ForkLift 4.2.5: the switch from libssh2 to OpenSSH for SFTP connections.

This transition had been under consideration for a long time, as we recognized that our users depend on more advanced SSH capabilities that libssh2 lacks. OpenSSH not only provides better compatibility but also includes more advanced features, making it a more powerful and flexible solution. Some of the most requested missing features in libssh2 include Include statements and ProxyJump, both of which OpenSSH supports. Given its broader functionality and enhanced reliability, we believe this implementation will result in fewer compatibility issues compared to libssh2.

Temporary Removal of ForkLift 4.2.5

Unfortunately, ForkLift 4.2.5 contained some unexpected problems affecting usability, which is why we decided to remove it from our site shortly after its release. After identifying and addressing the issues, we are now releasing ForkLift 4.2.6, which contains the necessary fixes.

OpenSSH instead of libssh2

Starting from ForkLift 4.2.5, ForkLift uses OpenSSH instead of libssh2 for SFTP connections. This change may cause issues for some users, so for a limited time, ForkLift includes both implementations. If you experience problems with the new implementation, you can temporarily switch back to the old one by entering a command in Terminal.

  • libssh2 was used in ForkLift versions 4.0 – 4.2.4
  • OpenSSH is used starting from 4.2.5

Temporary Fallback Option

If you encounter issues with OpenSSH in ForkLift 4.2.6, you can switch back to libssh2 by running the following command in Terminal:

defaults write com.binarynights.ForkLift.plist useLibSSH2 true

To return to the new OpenSSH implementation, use:

defaults write com.binarynights.ForkLift.plist useLibSSH2 false

For Setapp users

If you use the Setapp version of ForkLift, run the following command in Terminal to switch back to libssh2:

defaults write com.binarynights.forklift-setapp.plist useLibSSH2 true

To return to the new OpenSSH implementation, use:

defaults write com.binarynights.forklift-setapp.plist useLibSSH2 false

How to Run These Commands

  1. Open Terminal (Applications > Utilities > Terminal)
  2. Copy and paste the command
  3. Press Enter

Updating Your SSH Config File

With OpenSSH, you may need to update your SSH configuration file if you encounter connection issues. ForkLift will display error messages that can guide you in fixing the problem.

In case of issues

If updating the config file doesn’t resolve the issue, you can temporarily switch back to libssh2 (see the Terminal command above).

Alternatively, you can download ForkLift 4.2.4, which doesn’t contain OpenSSH from here: Download Link

We understand that changes like this can be disruptive, but we strongly believe that this implementation will benefit our users in the long run by providing support for advanced SSH features.

We initially considered releasing a beta version, but beta versions often don’t get enough feedback, making it difficult to identify and fix potential issues in time. We hope that by keeping the fallback option available, this transition will be as smooth as possible.

There may still be issues, and we encourage users to report any problems in the comments section or via email at support [at] binarynights [dot ] com.

Full list of changes:

New

  • OpenSSH implementation instead of libssh2 to connect via SFTP – this means that config file commands supported by OpenSSH, such as ProxyJump and Include, will work in ForkLift 4
  • Czech localization
  • When ForkLift isn’t in the Applications folder, it offers to move itself there, as it must be in that location to work properly
  • Displays the number of subitems during preparation for better clarity and user experience

Improvement

  • Added support for keyboard shortcuts using the Option/Alt key and a letter. As a result, Option + a letter can no longer be used for type selection in the file view. Type selection still works when typing a word while the file view is active
  • Custom keyboard shortcuts for the Move to Trash command that include the Option/Alt key now correctly move items to the Trash instead of attempting to delete them immediately
  • VoiceOver now announces which pane is selected when switching panes
  • Deleted folders no longer appear in the Recent Folders list
  • File operation preparation is now up to 10 times faster locally

Fixes

  • Fixes an issue that caused slow navigation, introduced in version 4.2.3
  • Fixes an issue where icons in the Quick Open window were displayed incorrectly
  • Fixes an issue where Tool names in the Settings were not updated in some cases, remaining “Untitled” despite being renamed
  • Fixes an issue where dragging multiple folders over the Plus sign in the tab bar only opened one folder instead of all of them in a new window
  • Fixes an issue where dragging a tab into the file view created an unwanted tab item inside the view
  • Fixes an issue where the same color tag could be added twice using keyboard shortcuts
  • Fixes an issue with pinned tabs causing unexpected behavior when the “Restore windows and tabs on startup” setting was enabled
  • Fixes an issue where pinned tabs behaved unexpectedly when opening a new window
  • Fixes an issue in Icon View where dragging and dropping an item onto a folder would automatically open the folder
  • Fixes an issue where the Connect Panel did not open in the correct pane when remote connections were locked to the Right side in the Settings and the user changed the layout from one pane to two panes
  • Fixes an issue with the Group by function, introduced in version 4.2.1, where grouping did not work correctly if the “Show folders on top” setting was disabled
  • Numerous minor fixes and improvements

Download ForkLift 4.2.6

49 thoughts on “ForkLift 4.2.6 is available

  1. I already regret updating to ForkLift 4…. Some of the key features have been removed.

    Most importantly: There is no possibility to select a file without using the mouse or mouse pad. Also it is not possible to assign a shortcut to in order to select one or more files. The command simply does not exist in ForkLift 4.

    A second issue: why isn’t there a simple build in compare direcetory command?

    I have commented this several times, without getting a satefiying answer. Also it seems there are no plan to include this in a future update.

    1. Keyboard selection of files is considered a no go since forklift 4. Hilarious, isn’t it? That’s why I consider Forklift 4.x as broken.

    2. Keyboard selection is not part of ForkLift 4, and we have no plans to reintroduce it. I understand that this may be disappointing if you relied on that feature, but it has been clearly communicated, including in the blog comments. If you regret purchasing ForkLift 4, you may request a refund. Whether a refund is possible depends on how much time has passed since your purchase, but if it is technically feasible, we will process it.

      Comparing folders is possible using the Compare feature and third-party tools. Additionally, the sync feature compares folders – if you want to see the differences between two folders, you can start a sync, review the output, and then cancel it. We have also added a dedicated folder comparison feature to our feature request list, so it may be available in the future.

      Regarding your repeated comments, I am unsure what a “satisfying answer” would be. If you expect us to bring back keyboard selection, that will not happen. Continuously asking about it will not change this decision. If ForkLift 4 does not meet your needs, I recommend requesting a refund instead of repeatedly bringing up the same issue.

      1. I can tell you why the answer is not satisfying:

        1) You did not tell me why keyboard selection is not possible. Clearly, there is no technical reason. Stating that:
         “Keyboard selection is not part of ForkLift 4, and we have no plans to reintroduce it” 
        sounds like some ideologic reason, but not a logical argument.

        2) I still consider myself as a customer, at least I am paying for ForkLift. With all respect, but a statement such as:
        “Continuously asking about it will not change this decision.”
        is not acceptable. This is the way you talk to a kid who is asking for chocolate. 

        As such, I will take every opportunity to ask for a keyboard selection which I consider fundamental. Further, I will post on social media and other blogs about they way you are dealing with it. 

  2. Hi.
    In version 4.2.6, the Option button + Trash icon on ToolBar stopped working. It should delete the file, but it moves it to the trash. However, in the Commands menu, the Delete option appears instead of Move To Trash when we press the Option button.

  3. Still don’t know how to enable the relevant features in OpenSSH. I didn’t see the options for ProxyJump and Include in the advanced settings. I hope for a detailed explanation.

    1. They don’t appear to be exposed in the server configuration GUI (yet?), but any entries you have in your ~/.ssh/config file, including options like ProxyJump settings and keys, seem to be honoured if you just put the same host name from your ssh config into the “Server” field of ForkLift’s Connect panel. You do also need to specify username and password.

    2. Advanced OpenSSH features such as ProxyJump, Include statements, and other options are not available in ForkLift’s GUI. However, ForkLift respects the settings in your ~/.ssh/config file. To use these features, you need to configure them directly in your SSH config file.

      If you already have entries in ~/.ssh/config, simply enter the corresponding hostname in the Server field of ForkLift’s Connect panel, and those settings should be applied. You will still need to provide the username and password if required.

      For more details on configuring OpenSSH options, you can refer to the official OpenSSH documentation:
      https://man.openbsd.org/ssh_config

      If you don’t know how config files work, then you might need to look that up but here are some examples:

      # Include additional configuration files
      Include ~/.ssh/custom_config

      # Default settings for all servers
      Host *
      User myusername
      IdentityFile ~/.ssh/id_rsa
      ForwardAgent yes
      ServerAliveInterval 60

      # Specific configuration for a server using ProxyJump
      Host myserver.example.com
      HostName myserver.example.com
      User myusername
      Port 22
      ProxyJump jumphost.example.com
      IdentityFile ~/.ssh/id_ed25519
      Compression yes

      # Configuration for a jump host
      Host jumphost.example.com
      User myusername
      IdentityFile ~/.ssh/id_rsa
      ForwardAgent yes

      # Wildcard example: Apply settings for multiple servers in the same domain
      Host *.company.com
      User workuser
      IdentityFile ~/.ssh/work_id_rsa
      ProxyJump company-gateway.company.com
      ServerAliveInterval 30

      If you enable invisible files in ForkLift, you can open your .ssh folder inside your home directory and create a config file using File > New File from the menu. Rename the file to config (without an extension) and add the necessary lines. If a config file already exists, you can simply update it.

  4. I’ve really been hoping you’d make this change. This has really benefitted my workflow now I can do ProxyJump and made ForkLift even more useful to me, so hopefully the teething troubles for users that have experienced them will be short-term. I’m glad you decided to push forward with it.

    Cheers.

    1. Thank you for your feedback! We’re glad to hear that this change has improved your workflow. Hopefully, it enhances functionality for advanced users while keeping the impact minimal for others.

  5. The implementation of OpenSSH is great news as I make extensive use of the ssh config file.

    Do you know if Forklift supports “Match exec” commands? A large number of my entries run a script that detects if I’m on my home subnet or not, and consequently establishes a connection either to an internal IP or external DNS name. e.g. 

    Match exec “/Users/paul/onsubnet 192.168.1.” host dsrv2
     Hostname 192.168.1.32
     Port 22
     User paul

    Match exec “/Users/paul/onsubnet –not 192.168.1.” host dsrv2
     HostName ssh.mydomain.com/dsrv2
     ProxyCommand /opt/homebrew/bin/cloudflared access ssh –hostname %h
     User Paul

    Using dsrv2 in the Forklift hostname results in an error popup saying “The item can’t be opened” “/Users/paul/onsubnet: line 23: ifconfig: command not found”

    Here is the onsubnet script if it helps:
    #!/usr/bin/env bash

    if [[ “$1” == “–help” ]] || [[ “$1” == “-h” ]]  || [[ “$1” == “” ]] ; then
      printf “Usage:\n\tonsubnet [ –not ] partial-ip-address\n\n”
      printf “Example:\n\tonsubnet 10.10.\n\tonsubnet –not 192.168.0.\n\n”
      printf “Note:\n\tThe partial-ip-address must match starting at the first\n”
      printf “\tcharacter of the ip-address, therefore the first example\n”
      printf “\tabove will match 10.10.10.1 but not 110.10.10.1\n”
      exit 0
    fi

    on=0
    off=1
    if [[ “$1” == “–not” ]] ; then
      shift
      on=1
      off=0
    fi

    regexp=”^$(sed ‘s/\./\\./g’ <</dev/null
    else
      hostname -I | tr -s ” ” “\012” | fgrep -v 127.0.0. | egrep “$regexp” >/dev/null
    fi

    if [[ $? == 0 ]]; then
      exit $on
    else
      exit $off
    fi

    Thanks.

      1. Sorry for the delay, I didn’t see your reply because my browser was caching the page.
        Thank for for linking v3 for testing – I can confirm it didn’t work in Forklift v3 either unfortunately.

  6. Such a shame. This looks great and would be great in my setapp subscription but 1 Password is still not supported. I have to use something else.

    1. 1Password was supported in the previous versions too but if there was an Include statement in the config file, then it wasn’t working correctly. Since OpenSSH has support for the Include statement, I think that should solve this issue. Do you have an Include statement in your config file?

      1. I have been using 1Password with the old versions until this version without issue.

        When I try to connect to sftp with this version i get an error about AskPassTool, if I enable the flag “useLibSSH2” I am able to connect without issues.

        Happy for Binarynights to contact me via email for troubleshooting

        1. These are two separate issues. I assume, you use the Setapp version of ForkLift. Unfortunately, the latest Setapp version contains a bug and it can’t connect to SFTP servers with the new ssh implementation, when you revert to the old one, it can connect. We have already uploaded the fixed version but Setapp hasn’t released it yet. We hope that they will publish the new version soon. We are sorry for the problem. If you see that a new version is available, please revert to OpenSSH with the terminal command and check if everything works as expected with the new implementation.

  7. Two rather large problems, so far:

    1. I couldn’t connect to any of my existing favourites, as it would give me an error:

    > The item can’t be opened: AskPassTool is missing

    2. I tried to install and run 4.2.4, and it nuked my favourites. I can still find them all in Keychain Access, but for some reason ForkLift is not finding them.

    1. We are sorry for the issue with the Setapp version. The fixed version is already available on Setapp.

      As for the favorites, installing the non-Setapp version doesn’t delete the favorites. Had you unintsaled the Setapp version before you installed the non-Setapp version?

  8. I’m using the latest version from direct download (4.2.6 (449)) and having issues connecting via SFTP to my shared webhosting. With versions < 4.2.6 I never had any problems.

    1. 1. Have you read this blog post?
      2. What error message do you receive? How do you try to connect (password, key, etc)?

      1. Yes I read the blog post and also the comments. There seme to be a version with a fix (setapp version / non-setapp version) but you did not write what version/build number this shall be. So I don’t know if my version (shows as “latest”) is also the version including the fix or not.

        The error is very generic: “Authentication failed – Enter the password for the server …”.
        After doing this a few times my IP gets blocked by the provider and I always have to request an unlock.
        Authentication information are correct 100%.

        1. Please contact us regarding this issue in an email at support [at] binarynights [dot] com and write down how you try to connect. Is there only a password to authenticate?

          Download the previous version: https://download.binarynights.com/ForkLift/ForkLift4.2.4.zip

          And send us two versions of the Console log, one when you connect with version 4.2.4 and one when you try to connect with the OpenSSH implementation with version 4.2.6. (Make sure to use the Terminal command to switch back to OpenSSH if you have already changed that.)

          Make sure to use the same favorite to connect:

          0. Disconnect from the server if you are connected
          1. Open the Console app (Applications > Utilities > Console)
          2. Make sure that your own device is selected in the sidebar
          3. Click “Start Streaming” in the main window or the Start button in the toolbar if there are no messages inside the main Console window
          4. Search for the name of the favorite that you want to connect to (or if you haven’t added the server as a favorite, then search for the term that is entered into the Server field on the connect panel)
          5. In the search field change “Any” to “Category”
          6. Make sure that “Include Info Messages” and “Include Debug Messages” are enabled in the Action menu
          7. Try to connect in ForkLift to your server
          8. Go back to Console and copy the logs

          Please send us the logs in an email and share any additional information that could be helpful.

  9. Hello there!
    After upgrading to 4.2.6 Forklift is crashing without any warnings or debug messages after some time. I have no idea why it is happening. So I can not give you any relevant input apart from the following:

    Chip Apple M3 Max
    macOS 15.3.1 (24D70)

    1. We are sorry for that issue. We have already fixed that problem and the fix will go live in the next update.

      1. Awesome! Thanks a lot!
        And one more thing – not sure if this is still present in 4.2.6 or not – it seems not be present anymore. Its this:
        On first doubleclick, I can’t open a file (no matter the fily type) in my editor reliably. Sometimes I am getting a message saying something generic like: can’t open this file.
        Another double click helps and then the file opens without any issues.

        However this issue is a bit annoying.. I have been hoping for a fix the past few forklift versions. Now that my forklift ist crashing regularly, I am not sure if this bit is fixed or not.. Just wanted to let you know.

        1. If you can’t use ForkLift 4.2.6 like this, then please downgrade to the previous version or use the above command in Terminal to switch back to the old ssh implementation. In that case, don’t forget to revert to the new one after the next update is released. We are not aware of the issue, which you have mentioned, so we haven’t fixed it on purpose. Please try to test this or the new version and let us know if you still can see that problem. If you can, then please check what the exact error message is.

          1. ok, thanks!
            I will post here, if I encounter mentioned file opening issue again.
            So far it hasn’t popped up.

            Thanks for being so responsive!

  10. Hi, congratulations for your work. I want to know if they will enable the option of auto refresh files soon?. It is very annoying not to see files that are physically in a folder. And the only way to see them is by using the Refresh function

    1. Locally, the file list should update when there is a change. On remote connections, you have manually refresh the file view. Most protocols don’t have support for detecting changes, so it is not possible to update the file view when a change was made by a third party. Constantly updating the file view is not a good solution to this. So, we are not going to introduce that change.

  11. The following wish list for syncing files:

    1. add option “Include objects”, like “Exclude objects”

    2. add option “sync into crypted container”, which is AES256 crypted by password and/or keyfile, which is splitted in multiple files, each 2046MB, dynamically file size. then you can backup-sync directly lokal folders to cloud.

    1. 1. I don’t think that we will add the include objects option. When we were developing ForkLift 4, we considered adding both options but we have decided not to add both because of the complexity and the possible confusion that conflicting filters might cause.

      2. Isn’t it possible to open that container in ForkLift and sync into it? Why is it important that the files get split? And who would do the splitting?

      3. We will consider adding some checksum options.

  12. ForkLift 4.2.6 connects to routeros SFTP using openssh mode and prompts the following error, while using libssh mode it works normally, and terminal SFTP access is also normal.

    ““
    First:
    General error: Warning: Permanently added ‘192.168.3.1’ (RSA) to the list of known hosts.

    After:
    General error:
    ““

    1. Please write us regarding this at support [at] binarynights [dot] com and also let us know what is in your config file. If you try to connect using a password or a private key.

      Also, send us two versions of the Console log, one when you connect with libssh and one when you try to connect with the OpenSSH implementation with version 4.2.6.

      Make sure to use the same favorite to connect:

      0. Disconnect from the server if you are connected
      1. Open the Console app (Applications > Utilities > Console)
      2. Make sure that your own device is selected in the sidebar
      3. Click “Start Streaming” in the main window or the Start button in the toolbar if there are no messages inside the main Console window
      4. Search for the name of the favorite that you want to connect to (or if you haven’t added the server as a favorite, then search for the term that is entered into the Server field on the connect panel)
      5. In the search field change “Any” to “Category”
      6. Make sure that “Include Info Messages” and “Include Debug Messages” are enabled in the Action menu
      7. Try to connect in ForkLift to your server
      8. Go back to Console and copy the logs

      If that is possible, you can give us a test account to your server, so that we can test what the issue is.

Leave a Reply to deminok Cancel reply

Your email address will not be published. Required fields are marked *