Inside bamboo configuration "Plan Configuration / Branches", there is an option to delete a branch within the repository after a certain idle time (e.g., 30 days). The rule only looks at the time of the latest source check-in/timestamp. When using a mercurial-graft, from another branch older than 30 days (eg 40 days) will delete the current branch. This behavior isn´t right. The rule must check the activity which was performed in the current branch and not the timestamp on latest source check-in.
I think you are right. From your description, It seems you've stumbled into this bug: [BAM\-18460\] New plan branch is automatically deleted due to last commit date from the newly created branch.
As a workaround, I do suggest that when you create a new branch from a commit that is older than your expiry interval, please add a simple small commit to your new branch. The expiry job is usually configured to run at 3 AM so you will probably have time to add the new commit before the job is run. It doesn't look like a beautiful solution but is something you can do until we fix that bug.
Another possible workaround is to increase your branch expiry interval to a bigger value to cover your scenario.
I hope that helps!